3变量绘制热图ggplot2

3-variables plotting heatmap ggplot2

我目前正在开发一个非常简单的 data.frame,包含三列:

x 包含一组点的 x 坐标,

y 包含点集的 y 坐标,并且

weight 包含与每个点关联的值;

现在,在 ggplot2 工作,我似乎能够绘制这些数据的等高线水平,但我无法找到一种方法来根据变量 weight 填充绘图.这是我使用的代码:

ggplot(df, aes(x,y, fill=weight)) + 
  geom_density_2d() +
  coord_fixed(ratio = 1) 

遗憾的是,你可以看到没有任何填充物。 已经试了三天了,开始郁闷了

在常规 ggplot 调用中指定 fill=weight and/or color = weight,没有结果。我试过使用不同的几何图形(瓦片、光栅、多边形……),仍然没有。试图将 aes 直接指定到 geom 层中,也没有用。 试图将对象转换为 ppp,但 ggplot 无法处理它们,而且使用 base-R 绘图也不起作用。老实说,我不知道出了什么问题! 我附上了前 10 个点的数据,这些数据分布在不规则的网格上:

x = c(-0.13397460,-0.31698730,-0.13397460,0.13397460,-0.28867513,-0.13397460,-0.31698730,-0.13397460,-0.28867513,-0.26794919)

y = c(-0.5000000,-0.6830127,-0.5000000,-0.2320508,-0.6547005,-0.5000000,-0.6830127,-0.5000000,-0.6547005,0.0000000)

weight = c(4.799250e-01,5.500250e-01,4.799250e-01,-2.130287e+12,5.798250e-01,4.799250e-01,5.500250e-01,4.799250e-01,5.798250e-01,6.618956e-01)

有什么建议吗?所需的输出将是以下几行:

click

提前谢谢你。

根据你的描述geom_density听起来不对。

你可以试试 geom_raster:

ggplot(df, aes(x,y, fill = weight)) + 
     geom_raster() +
     coord_fixed(ratio = 1)  + 
     scale_fill_gradientn(colours = rev(rainbow(7)) # colourmap

这是第二好的使用 fill=..level...

# load libraries
  library(ggplot2)
  library(RColorBrewer)
  library(ggthemes)

# build your data.frame
 df <- data.frame(x=x, y=y, weight=weight)

# build color Palette
  myPalette <- colorRampPalette(rev(brewer.pal(11, "Spectral")), space="Lab")


# Plot
  ggplot(df, aes(x,y, fill=..level..) ) + 
      stat_density_2d( bins=11, geom = "polygon") +
      scale_fill_gradientn(colours = myPalette(11)) +
      theme_minimal() +
      coord_fixed(ratio = 1)