我正在尝试使用R制作热图。我正在尝试使用ggplot2.My实际数据框要大得多,但在这里我只包含一小部分
x <- c(502.9, 512.1, 716.6, 759.7, 776.1, 776.5, 736.1, 271.3, 304.7, 279.9, 263.8, 726.6, 767.6, 778.8, 779.2, 263.6, 291.8, 472.6, 499.9, 684.9)
y <- c(374.6, 367.4, 378.1, 373.7, 381.4, 395.7, 412.1, 399.2, 364.6, 382.1, 409.1, 410.4, 411.1, 429.4, 477.4, 468.6, 406.5, 343.2, 356.9, 365.2)
a <- data.frame(x,y)
ggplot(a, aes(x = x, y =y)) + stat_density2d(geom = "tile", aes(fill = ..density..), contour = FALSE) + scale_fill_gradient (low= "green", high="red") + geom_point()
我想获得与此图像类似的东西,区域越红,该区域的点越多。
正如你所看到的,当我试图做到这一点时,我的背景是绿色的。如何更改我的代码以获得图像中显示的热图?如何将图像作为背景?
谢谢!
答案 0 :(得分:4)
这样的东西?
library(ggplot2)
data(hadley, package="ggmap")
img <- hadley
set.seed(1) # for reproducible example
df <- data.frame(x=rnorm(100,mean=c(150,250),sd=25),
y=rnorm(100,mean=480, sd=20))
ggplot(df, aes(x,y)) +
annotation_raster(img, xmin=-Inf, xmax=Inf, ymin=-Inf, ymax=Inf)+
stat_density2d(geom = "polygon", aes(fill=..level..)) +
geom_point(size=0.5)+
scale_fill_gradient(low="green",high="red") +
scale_x_continuous(limits=c(0,dim(img)[2]),expand=c(0,0))+
scale_y_continuous(limits=c(0,dim(img)[1]),expand=c(0,0))+
coord_fixed()
主要想法是将geom="polygon"
与aes(fill=..level..)
一起使用。可以使用this post中描述的annotation_raster(...)
添加图片本身。
向哈德利威克姆致以诚挚的道歉。