如何在R中的基本图上叠加热图?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在R中的基本图上叠加热图?相关的知识,希望对你有一定的参考价值。

a half football field draw by plot()

enter image description here

这是我如何绘制足球场的图。

par(bg="transparent")
plot(0,0,type="n",xlim=c(-50,50),ylim=c(0,60),ann=F,axes=F,xaxt="n",yaxt="n"
library("jpeg")
ima=readJPEG("C:/Users/USER/Desktop/g5.jpg")
lim=par()
rasterImage(ima, lim$usr[1], lim$usr[3], lim$usr[2], lim$usr[4])
segments(35,65,35,40,col="white",lwd=3)
segments(-35,65,-35,40,col="white",lwd=3)
segments(-35,40,35,40,col="white",lwd=3)
segments(14,65,14,55,col="white",lwd=3)
segments(-14,65,-14,55,col="white",lwd=3)
segments(-14,55,14,55,col="white",lwd=3)
par(new=T)
curve(sqrt(14^2-x^2)-3,xlim=c(-50,50),ylim=c(0,60),axes="F",ann="F",col="white",lwd=3)

par(new=T)
curve(-sqrt(14^2-x^2)+50,xlim=c(-50,50),ylim=c(0,60),from=-sqrt(96),to=sqrt(96),axes="F",ann="F",col="white",lwd=3)
par(new=T)
curve(-sqrt(5^2-(x+54)^2)+62.5,xlim=c(-50,50),ylim=c(0,60),from=-54,to=-49,axes="F",ann="F",col="white",lwd=3)
par(new=T)
curve(-sqrt(5^2-(x-54)^2)+62.5,xlim=c(-50,50),ylim=c(0,60),from=49,to=54,axes="F",ann="F",col="white",lwd=3)
box(which="plot",col="white",lwd=3)

而且我想像下面的图片一样在上面添加一个热图:

what I expect to plot

enter image description here

我尝试了很多绘制热图的方法,但是我面临的常见问题是我不知道如何将热图放在我绘制的足球场上。抱歉,我是R的初学者,所以我认为这是我最简单的方法(叠加)。谢谢!

答案

如何将image函数与add=TRUE一起使用,其中使用矩阵指定要添加的区域。

这是一个简单(而且很无聊)的例子。

## Create raster image
plot(c(100, 250), c(300, 450), type = "n", xlab = "", ylab = "")
image <- as.raster(matrix(0:1, ncol = 5, nrow = 3))
rasterImage(image, 100, 300, 150, 350, interpolate = FALSE)

## Add an area
newarea <- matrix(NA, nrow=150, ncol=150)
newarea[100:140,100:110] <- 3
newarea[100:140,110:120] <- 4
image(x=100:250, y=300:450, z=newarea, add=T)

重要的是确保第二次调用x函数的yimage对应于第一幅图的x和y极限,否则将看不到新区域。

以上是关于如何在R中的基本图上叠加热图?的主要内容,如果未能解决你的问题,请参考以下文章

如何在R中叠加散点图?

如何将数据椭圆叠加在 ggplot2 散点图上?

R:如何使用 ggplot2 创建一个半色半数的热图?

如何在 YouTube 缩略图上叠加播放按钮

我可以在地理地图上叠加 ggplot 热图吗?

r中的热图足球比赛