gpt4 book ai didi

r - 三个连续变量的等值线图或热图

转载 作者:行者123 更新时间:2023-12-02 02:58:01 26 4
gpt4 key购买 nike

我有一个模型告诉我两个变量之间存在相互作用:a 和 b,这显着影响我的响应变量:c。这三个变量都是连续数值变量。详细而言,c 是我的响应变量的变化率,b 是我的预测变量的变化率,a 是平均年降雨量。分析单位是栅格中的像素。所以我的模型告诉我平均年降雨量会改变我的预测因子如何影响我的响应。

为了可视化这种交互作用,我想使用等高线图/热图/水平图,其中 x 轴和 y 轴上有 a 和 b,c 提供颜色来显示我的响应变量在 a 描述的空间内如何变化和b。我可以用散点图来做到这一点,但它不是很漂亮或易于解释:

qplot(b, a, colour = c) +
scale_colour_gradient(low="green", high="red") +

enter image description here

当我尝试绘制等值线图/热图/水平图时,尽管我得到的只是错误、空白图或丑陋的图。

geom_contour 给我一个错误:

ggplot(data = Mod, aes(x = Rain, y = Bomas, z = Fire)) +
geom_contour()

Warning message:
Not possible to generate contour data

geom_raster 最初给我错误:无法分配大小为 81567.2 Gb 的向量,但是当我舍入数据时它会产生:

ggplot(data = df, aes(x = a, y = b, z = c)) +
geom_raster(aes(fill = c))

enter image description here

interpolate = TRUE 添加到 geom_raster 代码只会使线条有点模糊。

geom_tile 生成一个空白图表,但带有 c: 的比例尺

ggplot(data = df, aes(x = a, y = b, z = c)) +
geom_tile(aes(color = c))

enter image description here

我还尝试使用 stat_密度2d 并将填充和/或颜色设置为 c,但出现错误,并且我尝试在中使用 levelplot以及 lattice 包,但会产生以下结果:

levelplot(c ~ a * b, data = df,
aspect = "asp", contour = TRUE,
xlab = "a",
ylab = "b")

enter image description here

我怀疑我遇到的问题是因为函数没有设置来处理连续的 x 和 y 变量,所有示例似乎都使用了因子。我本以为我可以通过改变垃圾箱宽度来弥补这一点,但这似乎也不起作用。是否有一个函数可以让您制作包含 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")

最佳答案

您可以获得自动分箱,例如使用stat_summary_2d计算平均值:

ggplot(df, aes(a, b, z = c)) +
stat_summary_2d() +
geom_point(shape = 1, col = 'white') +
viridis::scale_fill_viridis()

enter image description here

另一个不错的选择是按第三个变量对数据进行切片,并绘制小倍数。不过,这对于随机数据来说并没有很好地显示:

library(ggplot2)
ggplot(df, aes(a, b)) +
geom_point() +
facet_wrap(~cut_number(c, 4))

enter image description here

关于r - 三个连续变量的等值线图或热图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47699241/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com