我有一个模型告诉我两个变量之间存在相互作用:a和b,它对我的响应变量产生了重大影响:c。这三个都是连续的数字变量。对于细节c,我的响应变量的变化率,b是我的预测变量的变化率,a是年平均降雨量。分析单位是栅格中的像素。所以我的模型告诉我年均降雨量会改变我的预测因子如何影响我的反应。
为了使这种交互可视化,我想在x和y轴上使用a和b的等高线图/热图/水平图,并提供颜色以显示我的响应变量如何在a描述的空间内变化和b。我可以用散点图来做到这一点,但它不是很漂亮或很容易解释:
qplot(b, a, colour = c) +
scale_colour_gradient(low="green", high="red") +
当我尝试绘制轮廓图/热图/水平图时,虽然我得到的只是错误,空白图或丑陋的图。
geom_contour
给了我一个错误:
ggplot(data = Mod, aes(x = Rain, y = Bomas, z = Fire)) +
geom_contour()
Warning message:
Not possible to generate contour data
geom_raster
最初给了我Error: cannot allocate vector of size 81567.2 Gb
但是当我对我的数据进行处理时,它会生成:
ggplot(data = df, aes(x = a, y = b, z = c)) +
geom_raster(aes(fill = c))
将interpolate = TRUE
添加到geom_raster
代码只会使线条模糊不清。
geom_tile
生成一个空白图表,但带有c:
ggplot(data = df, aes(x = a, y = b, z = c)) +
geom_tile(aes(color = c))
我也尝试过使用stat_density2d
并将填充和/或颜色设置为c,但刚出错,我尝试在levelplot
中使用lattice
包也可以产生这个:
levelplot(c ~ a * b, data = df,
aspect = "asp", contour = TRUE,
xlab = "a",
ylab = "b")
我怀疑我遇到的问题是因为没有设置函数来处理连续的x和y变量,所有的例子似乎都使用了因子。我原本以为我可以通过更改bin宽度来弥补这一点,但这似乎也不起作用。是否有一个功能允许您使用3个连续变量制作热图?或者我是否需要将a和b变量视为因子并手动创建适合我的数据的数据框?
如果您想亲自体验,那么您遇到的问题与我所遇到的类似:
df<- as.data.frame(rnorm(1:1068))
df[,2] <- rnorm(1:1068)
df[,3] <- rnorm(1:1068)
names(df) <- c("a", "b", "c")
答案 0 :(得分:2)