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

谢谢您的帮助。

4

3 回答 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()

在此处输入图像描述

于 2012-04-17T20:38:28.147 回答
3

您可以使用该image()功能创建热图。通过指定col参数来自定义颜色。

请注意,如果您当前使用的是 data.frame,则可能需要将其转换为矩阵:

 image(as.matrix(myVar))
于 2012-04-17T20:02:15.620 回答
2

或者,您可以使用 ggplot2 制作热图,只需使用平铺几何图形( geom_tile)。有关非常详细的示例,请参见此链接

于 2012-04-17T20:14:25.573 回答