ggplot() +
layer(
data = diamonds, mapping = aes(x = carat, y = price),
geom = "point", stat = "identity"
)
在上面的示例中,我想知道是否可以通过索引为“ aes”函数指定参数。
我知道克拉和价格分别对应钻石名称数组中的第1和第8个元素。您能否解释以下原因为何不起作用?
ggplot() +
layer(
data = diamonds, mapping = aes(x = names(diamonds)[1], y = names(diamonds)[8]),
geom = "point", stat = "identity"
)
谢谢,德里克
最佳答案
第二个版本不起作用,因为names(diamonds)[1]
是"carat"
而不是carat
。使用aes_string
代替aes
可以正常工作。
ggplot( data = diamonds, mapping = aes_string(x = names(diamonds)[1], y = names(diamonds)[8]), stat = "identity")+ geom_point()
编辑:
要处理具有非法字符的名称,您必须将其括在反引号中(任何时候都想使用它们):
dd <- data.frame(1:10, rnorm(1:10))
names(dd) <- c("(PDH-TSV 4.0)(ET)(240)", "Y")
nms <- paste("`", names(dd), "`", sep="")
ggplot(dd, mapping=aes_string(x=nms[1], y=nms[2])) + geom_point()