【问题标题】:HeatMap and Dendogram with 100s of records具有 100 条记录的 HeatMap 和 Dendogram
【发布时间】:2018-08-31 22:16:19
【问题描述】:

我正在尝试绘制具有 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))

有没有什么方法可以拉伸绘图的尺寸以使其看起来更好?

【问题讨论】:

  • 它需要是一个大图像才能使所有这些行可读。我将添加一个答案以将其写入文件。
  • 有 500 行,您将需要一个非常大的图像才能使其可读!

标签: r heatmap


【解决方案1】:

你应该把它写到一个文件中,如果你还没有的话。似乎热图显示了一个您无法控制比例的图像(它总是方形的)。所以你需要让你的画布变大以适应你想要的东西!

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

要将其发送到 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() 来关闭图形设备非常重要。否则文件写入不会完成,后续图形也会发送到文件中。

【讨论】:

  • 我使用了上面的方法,但它对我不起作用。
  • 您需要提供更多信息。
  • 我已编辑我的问题以包含有关我的项目的更多信息。
  • 我检查了上面的代码,但名称不可见。
  • 您在看 PDF 吗?使用您发送的数据很好。你需要放大很多,因为文本太小了。小文本是因为行数太多。
【解决方案2】:

我也遇到过这个问题,用下面的代码解决了:

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

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

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

【讨论】:

    猜你喜欢
    • 2013-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-12
    • 1970-01-01
    • 2014-11-19
    相关资源
    最近更新 更多