R中的热力图或密度图

3

我是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

感谢您的帮助。

另请参阅以下链接:https://dev59.com/UWsz5IYBdhLWcg3wpZry https://dev59.com/Al7Va4cB1Zd3GeqPGA-z https://dev59.com/t2LVa4cB1Zd3GeqPz84S https://dev59.com/Xl3Ua4cB1Zd3GeqP_VKJ。这只是在 SO 中搜索“[r] 热力图”时的前几个结果。 - Paul Hiemstra
@PaulHiemstra 看起来是重复的问题,答案在这些问题上有点稀疏,但所有信息似乎都在那里,对吧? - Matt Parker
可能是绘制上三角或下三角矩阵的热图的重复问题。 - Paul Hiemstra
3个回答

6
对于一个漂亮的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()

enter image description here


3
你可以使用image()函数创建热力图。通过指定col参数来自定义颜色。
请注意,如果你目前正在使用的是data.frame,则需要将其转换为matrix:
 image(as.matrix(myVar))

2

或者,您可以使用ggplot2制作热图,只需使用tile geometry (geom_tile)。请参见此链接,了解一个非常详细的示例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接