人:
我似乎无法使用ggplot2的stat_countour()
命令生成等高线图。以下是我正在尝试做的一个例子:
df <- data.frame(matrix(NA, nrow = 100, ncol = 3))
names(df) <- c("X","Y","Z")
df$X <- seq(0,1, by=1/99)
df$Y <- seq(0,1, by=1/99)
df$Z <- exp(0.8*log(df$X) + 0.2*log(df$Y))
v <- ggplot(df, aes(x=C, y=Y, z = Z))
v + stat_contour()
我遇到了可怕的Not possible to generate contour data
错误。我所看到的一切似乎暗示当矩阵不规则时会出现这个错误 - 但是,根据定义,我的X和Y似乎是规则的。
我试过stat_density()
也没有成功。任何帮助将不胜感激!
答案 0 :(得分:4)
在您发布的代码中,您没有定义网格,而是定义X等于Y的数据框。您可以使用expand.grid
函数创建网格,然后将Z定义为X和Y的某些函数:
library(ggplot2)
dat <- expand.grid(X=seq(0,1, by=1/99), Y=seq(0,1,by=1/99))
dat$Z <- exp(0.8*log(dat$X) + 0.2*log(dat$Y))
ggplot(dat, aes(x=X, y=Y, z=Z))+stat_contour()