Matplotlib 如何将scipy树状图保存为高分辨率文件?

Matplotlib 如何将scipy树状图保存为高分辨率文件?,matplotlib,scipy,cluster-computing,hierarchy,dendrogram,Matplotlib,Scipy,Cluster Computing,Hierarchy,Dendrogram,我有一个矩阵,它有600个不同的标签。因此,它确实是一个大文件;当我创建一个图形来聚集我的数据时,我不能很好地看到这些标签。我应该如何创建高分辨率文件并保存它 我已经尝试了下面的代码 将scipy.cluster.hierarchy导入为hcluster 将scipy.spatial.distance导入为ssd SimMatrix=mainTable distVec=ssd.squareform(SimMatrix) 联动装置=hcluster.联动装置(1-distVec) dendro=h

我有一个矩阵,它有600个不同的标签。因此,它确实是一个大文件;当我创建一个图形来聚集我的数据时,我不能很好地看到这些标签。我应该如何创建高分辨率文件并保存它

我已经尝试了下面的代码

将scipy.cluster.hierarchy导入为hcluster
将scipy.spatial.distance导入为ssd
SimMatrix=mainTable
distVec=ssd.squareform(SimMatrix)
联动装置=hcluster.联动装置(1-distVec)
dendro=hcluster.树状图(链接,叶旋转=90,叶字体大小=0.5,)
matplotlib.pyplot.savefig('plt.png',dpi=520,format='png',bbox_inches='tight')
我试图得到大的高分辨率文件,它可以是png或jpeg

我得到下面的图片作为图


问题不在于分辨率,而在于图像的大小(或线条的大小)。由于我不知道如何更改dendogram图中的线宽,我将使用直接的解决方案来制作一个巨大的图像

import scipy.cluster.hierarchy as hcluster
import scipy.spatial.distance as ssd
import matplotlib.pyplot as plt
import numpy as np

SimMatrix = np.random.random((600,600))
SimMatrix = SimMatrix+SimMatrix.T
SimMatrix = np.abs(SimMatrix-np.diag(np.diag(SimMatrix)))

distVec = ssd.squareform(SimMatrix)
linkage = hcluster.linkage(distVec) #Changed here do NOT C+P back
plt.figure(figsize=(150,150))
dendro  = hcluster.dendrogram(linkage, leaf_rotation=90., leaf_font_size=0.5,)

plt.savefig('plt.png', format='png', bbox_inches='tight')
plt.savefig('plt.jpg', format='jpg', bbox_inches='tight')
当我打开保存的图像时,它们看起来很糟糕,只有放大才能解决问题。但是jupyter笔记本中的内联图看起来不错,所以也许你只需要稍微调整一下格式

这可能不是最好的解决方案,但对我来说,它奏效了。希望其他更有能力的人也能给你正确的解决方案


注:不要试图用520 DPI保存这些,否则会破坏pyplot。

谢谢,主要问题实际上是数字大小。现在,我可以看得更清楚了。你对展示这种树有什么不同的想法吗?我还想实现类似“文件夹中的文件夹”。也许,你也可以提出一些建议。你可以尝试一个圆形的登道图(我不知道如何制作),但有600个标签,应该仍然很大,可以阅读。如果只需要结构而不需要标签,可以尝试dendogram绘图的截断选项。如果您需要不同组的确切标签,我建议您仅通过编程从链接矩阵中获取链接,并将其与标签匹配。对不起,但是对于600个实例,我真的没有更好的主意。