R中带有等高线的热图

问题描述

您好,我想从包含三列的表中生成热图。

DF:

 z         x    y
 0.014514491  21.340950 0.26666667
 0.013282926  12.907711 0.30434783
 0.020464170  10.266667 0.06250000
 0.039909394  25.778167 0.00000000
 0.023635756  18.537568 0.07142857
 0.078711706  13.441777 0.07142857
 0.084150460   6.622687 0.07142857
 0.111338834   1.910518 0.05263158
 0.066590831   9.889781 0.05882353

我想绘制这三列以获得具有这样的等高线的热图,但我想要有黑点和等高线的标签,我希望缩短为只有 4 位数字。

enter image description here

我的代码使用 R 基础,但我不知道如何将 z 值转换为矩阵以用于 fill.contour 命令:

library(RColorBrewer)

levels1 <- pretty(range(DF$z,finite = TRUE),40)
col1 <- rev(colorRampPalette(colors = c("red","yellow","white"),bias = 2)(n = length(levels1) - 1))
# Plot for DF
plot(x = DF$x,y = DF$y,type = "n",xaxs = "i",yaxs = "i",xlab = "",ylab = "",axes = FALSE)
Axis(side=1,labels=TRUE)
Axis(side=2,labels=TRUE)
# Contour fill
with(DF,.filled.contour(x = x,y = y,z = matrix(z,9,9),levels=levels1,col=col1))
# Contour lines
with(DF,contour(x = x,nlevels = 40,add = TRUE))
# Box around plot
Box()
# Add points
with(DF,points(x = x,pch = 21,bg = "black"))

contour.fill 命令后我的错误

Error in .filled.contour(x = Ne,y = im.rate,z = matrix(Pop_spec_fst,: 
  invalid x / y values or limits

或者我使用的是格子,但我不知道如何将点变为黑色和轮廓标签

library(latticeExtra) 
library(RColorBrewer) 
library(rasterVis)

levelplot(z ~ x * y,DF,panel = panel.levelplot.points,cex = 1.2,cuts = 15,contour = TRUE,labels=list(cex=0.7,round(DF$z,4)),col="black",par.settings = RdBuTheme
) + 
  layer_(panel.2dsmoother(...,n = 500)) 

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)