【问题标题】:generating high-resolution dendrogram plot in R在R中生成高分辨率树状图
【发布时间】:2012-01-15 02:19:34
【问题描述】:

我正在尝试在 R 中生成高分辨率树状图。

难点在于叶子节点有200多个,每个节点都用一个字符串标识。我想确保这些字符串标签中的每一个在生成的(打印的)图中都是可读的。

另外我想把原来的x轴(对应叶子节点)切换到y轴,把原来的y轴切换到x轴。为了更清晰的演示目的,我想在图的顶部再添加一个 x 轴(对应于切换图中的距离信息)。如何在 R 中做到这一点?

【问题讨论】:

  • 您能否提供更多信息,说明您打算制作这些图的功能。 R中有多个系统(ggplot、lattice、base)。此外,如果您能给我们提供一个示例数据集,那将非常有帮助。
  • 对于 200 个并排的字符串,为了便于阅读,您需要将其打印在一张相当大的纸上。
  • 嗨,保罗,输入将是基于相关系数的 210*210 相异矩阵矩阵。我是 R 新手,所以我不太清楚应该使用哪个确切的库产生这种情节。我注意到有不止一个库可以做到这一点。但我不知道哪一个能够支持高分辨率绘图并允许我切换轴的位置并根据需要添加更多轴。
  • 只是更多的澄清,我会为海报生成这个情节。
  • ggdendro 包允许您将树状图绘图数据转换为 data.frames,然后您可以使用 ggplot 进行绘图。这可能会帮助您解决大部分问题(双轴除外)。 cran.r-project.org/web/packages/ggdendro/index.html

标签: r plot dendrogram


【解决方案1】:

您可以使用标准的 R 函数来实现这一点。

绘制树状图

要从距离矩阵绘制树状图,您可以使用 hclust 函数。有关可用算法的更多详细信息,请参见其手册页。

# To produce a dummy distance matrix
distMatrix <- dist(matrix(1:9, ncol=3))

# To convert it into a tree
tree <- hclust(distMatrix)

对于绘图,dendrogram 类提供了一个有用的plot 方法。只需将 hclust 输出转换为树状图并绘制它:

dendro <- as.dendrogram(tree)

该方法提供了一个horiz参数,可以切换X轴和Y轴,测试如下:

plot(dendro, horiz=TRUE)
plot(dendro, horiz=FALSE)

管理其大小

为了便于阅读,这取决于您用于导出图像的设备。 R可以产生巨大的图像,由用户设置大小和分辨率。有关更多详细信息,请参阅pngpdf 的手册页(宽度、高度和 res 是有趣的参数)。

另一个要遵循的轨迹是图形参数:使用各种cex 值,您将能够调整标签的大小。有关详细信息,请参阅par 的手册页。

可读性是非常以人为本的,所以我不认为你会找到一种自动化的方式来自动获得可读的图,但是通过一些手动调整,你可以使用我提到的工具来实现它。如果自动化是强制性的,可以使用 R 生成的一些 par 元素(如 cin)来预测所需的设备宽度,但手动调整要简单得多。

新轴

axis 函数可以帮助您。

【讨论】:

    【解决方案2】:

    我花了一段时间才得到这个:

    # get font factor
    pdf(); ff<-72/par()$ps; dev.off();
    # if there are more than 20 entries 
    if (dim(x)[2] > 20) {
        # scale output by font size
        pdf(fout, height=dim(x)[2]/ff)
    } else {
        pdf(fout)
    }
    # increase right margin width
    op <- par(mar = par("mar") + c(0,0,0,2*max(nchar(colnames(x)))/ff))
    # plot horizontally
    plot(as.dendrogram(hclust(distance), hang=-1), main="Dissimilarity = 1 - Correlation", xlab="", horiz=T)
    # restore margin
    par(op)
    dev.off();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-19
      • 2013-02-23
      • 2016-12-18
      • 1970-01-01
      • 2020-02-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多