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()

07-26 09:09