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