R中的热图或密度图
Posted
技术标签:
【中文标题】R中的热图或密度图【英文标题】:Heat map or density map in R 【发布时间】:2012-04-17 19:57:19 【问题描述】:我是 R 新手,正在尝试创建热图或密度图来显示我的结果。我有 20 个不同地点和 20 年的 x 数据。我试图在同一张地图中显示位置和年份的差异。我的数据看起来像这样。
1975 1977 1979 1981 1983 1985 1987 1989
Dallas 25 28 27 29 31 33 35 37
Houston 33 38 43 48 53 58 63 68
Lubbock 28 29 31 33 35 37 39 41
Austin 22 24 26 28 30 32 34 36
San Antonio 31 32 33 34 35 36 37 38
感谢您的帮助。
【问题讨论】:
另见这些链接:***.com/questions/7747991/geographical-heat-map-in-r***.com/questions/8421536/a-true-heat-map-in-r***.com/questions/10198228/…***.com/questions/8161014/custom-heat-map-in-r。这只是在 SO 中搜索[r] heat map
时的前几个。
@PaulHiemstra 似乎是重复的,那么 - 这些问题的答案有点稀疏,但看起来所有信息都在那里,对吧?
Plotting a heat map for an upper or lower triangular matrix的可能重复
【参考方案1】:
对于一个漂亮的 image() 类型的绘图,您需要在轴上添加一些标签。此外,颜色图例将有助于解释颜色。我的博客http://menugget.blogspot.de/ 具有将此比例添加到图像图中的功能。下面是一个例子(从menugget加载image.scale函数后:
years <- seq(1975,1989,2)
db <- data.frame(Dallas=c( 25, 28, 27, 29, 31, 33, 35, 37),
Houston=c( 33, 38, 43, 48, 53, 58, 63, 68),
Lubbock=c( 28, 29, 31, 33, 35, 37, 39, 41),
Austin= c(22, 24, 26, 28, 30, 32, 34, 36),
San_Antonio= c(31, 32, 33, 34, 35, 36, 37, 38)
)
db <- as.matrix(db)
#plot
layout(matrix(c(1,2), nrow=1, ncol=2), widths=c(4,1), heights=c(4))
layout.show(2)
par(mar=c(5,5,1,1))
image(x=years, z=db, yaxt="n")
axis(2, at=seq(0,1,,dim(db)[2]), labels=colnames(db))
#image.scale from http://menugget.blogspot.de/2011/08/adding-scale-to-image-plot.html
par(mar=c(5,0,1,5))
image.scale(db, horiz=FALSE, yaxt="n", xaxt="n", xlab="", ylab="")
axis(4)
mtext("temp", side=4, line=2)
box()
【讨论】:
【参考方案2】:您可以只使用image()
函数来创建热图。通过指定col
参数来指定颜色进行自定义。
请注意,如果您当前使用的是 data.frame,则可能需要将其转换为矩阵:
image(as.matrix(myVar))
【讨论】:
【参考方案3】:或者,您可以使用 ggplot2 制作热图,只需使用 tile geometry (geom_tile
)。请参阅this link 了解一个非常详细的示例。
【讨论】:
以上是关于R中的热图或密度图的主要内容,如果未能解决你的问题,请参考以下文章
R语言ggplot2可视化绘制二维的密度图:在R中建立二维散点数据的连续密度热图2D密度估计MASS包中的kde2d函数实现2D密度估计geom_density2d函数可视化二维密度图
R语言可视化密度图并在密度图中嵌入图例信息使用geomtextpath包的geom_textdensity函数,将图例(legend)信息嵌入到密度图中