在R中生成高分辨率树状图

use*_*099 3 plot r dendrogram

我想在R中生成一个高分辨率的树状图.

困难在于有超过200个叶节点,每个节点由一个字符串标识.我想确保每个字符串标签在生成(打印)的图中都是可读的.

另一件事是我想将原始的x轴(对应于叶节点)切换到y轴,并将原始的y轴切换到x轴.为了更清楚的演示目的,我想在图的顶部再添加一个x轴(对​​应于切换图中的距离信息).如何在R中做到这一点?

mar*_*syl 5

您可以使用标准R功能实现此目的.

绘制树状图

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

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

# To convert it into a tree
tree <- hclust(distMatrix)
Run Code Online (Sandbox Code Playgroud)

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

dendro <- as.dendrogram(tree)
Run Code Online (Sandbox Code Playgroud)

此方法提供了一个horiz可以切换X和Y轴的参数,测试以下内容:

plot(dendro, horiz=TRUE)
plot(dendro, horiz=FALSE)
Run Code Online (Sandbox Code Playgroud)

管理它的大小

为了便于阅读,由您用于导出图像的设备决定.R可以产生巨大的图像,由用户决定大小和分辨率.对于参见手册页pngpdf进一步的细节(宽度,高度和资源是有趣的论点).

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

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

新轴

axis功能可以帮助您.