0
下面的代码工作正常错误与等高线图GGPLOT2
dat1 <- data.frame(x=c(-1,-1,1,1),y=c(-1,1,-1,1),z=c(1,2,3,4))
dat2 <- data.frame(x=c(-0.5,0.5),y=c(-0.5,0.5))
ggplot(dat1, aes(x=x, y=y, z=z)) +
geom_tile(aes(fill=z)) +
scale_fill_gradient(limits = c(0, 1), low = "yellow", high = "red")
然而,这
ggplot(dat1, aes(x=x, y=y, z=z)) +
geom_tile(aes(fill=z)) +
scale_fill_gradient(limits = c(0, 1), low = "yellow", high = "red") +
geom_point(data=dat2, aes(x=x,y=y))
给出了一个错误
Error: Aesthetics must be either length 1 or the same as the data (2): x, y, z
可有人请解释一下为什么?谢谢。
我其实是让在EVAL错误“错误(表达式,ENVIR,enclos) :找不到对象'z'“。希望我的回答有所帮助。 – DataJack
非常感谢。但是,当我指定dat2是数据源时,为什么'geom_point()'函数期望z?不应该覆盖从'ggplot()'传递的aes吗? – slabofguinness
这只是它的设计如何工作。我猜部分原因是因为它意味着在90%的情况下,像我的第一个例子那样,代码更简单。如果使用新的数据参数意味着即使某些内容相同,也重新输入了所有的美学内容,那么它只是生成不必要的大小的脚本,这似乎违背了ggplot2标语是“图形语法”。 – DataJack