具有100个记录的HeatMap和Dendogram

时间:2016-07-26 13:48:46

标签: r heatmap

我试图用100行来绘制热图和树形图,但我发现图表看起来非常拥挤,树形图和名称重叠。

nba <- read.csv("http://datasets.flowingdata.com/ppg2008.csv", sep=",")

dat<-rbind(nba,nba,nba)

nba_matrix <- data.matrix(dat)

nba_heatmap <- heatmap(nba_matrix, Rowv=NA, Colv=NA, col=cm.colors(256),
                       scale="column", margins=c(5,10))

enter image description here

有没有办法拉伸情节的尺寸以使它看起来更好?

2 个答案:

答案 0 :(得分:0)

如果您还没有,则应将其写入文件。似乎热图会发出一个你无法控制比例的图像(它总是正方形)。所以你需要让你的画布大到适合你想要的东西!

对于数百行,您需要使画布非常大,以避免文本重叠。

将其发送至pdf:

pdf("~/test.pdf", height=20, width=20)
heatmap(nba_matrix, Rowv=NA, Colv=NA, col = cm.colors(256),
        scale="column", margins=c(5,10))
dev.off()

使用heightwidth参数进行游戏,看起来就像你想要的那样。另请参阅png和相关的图形驱动程序。

nb:运行dev.off()来关闭图形设备非常重要。否则文件写入不会完成,后续图形也将被发送到文件。

答案 1 :(得分:0)

我也遇到了这个问题,并使用以下代码解决了该问题:

fontsize = (10 - nrow(m))/15+1 #plus one to avoid having no font size
if (fontsize <=6){fontsize=6}
pheatmap(m, height=50, width=25, border_color = NA, fontsize_row=fontsize #of heatmp

这对我有用,但限制为几百个项目。如果您有更大的数据,则需要更改height和width参数,或者使用类似的函数基于nrow(m)或ncol(m)来更改高度和宽度。

或者,如果您想快速攻克,则可以使用heatmaply软件包,该软件包会生成很棒的html热图。在浏览器中打开html文件,然后通过在浏览器中放大或缩小(Ctrl +和Ctrl-),可以轻松更改标签大小,然后单击“导出为png”按钮。