问题描述
您好,我想从包含三列的表中生成热图。
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 位数字。
我的代码使用 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 (将#修改为@)