我试图保存一个由大型表(10000+行,18列)生成的大型树状图,并附带了以下代码
from matplotlib import pyplot as plt
from scipy.cluster.hierarchy import dendrogram, linkage
import numpy as np
import pandas as pd
data = pd.read_csv("Input.txt", header = 0, index_col = None,\
sep = "\t", memory_map = True)
data = data.fillna(0)
Matrix = data.iloc[:,-18:]
Linkage_Matrix = linkage (Matrix, "ward")
fig=plt.figure(figsize=(20, 200))
#fig, ax = plt.subplots(1, 1, tight_layout=False)
ax = fig.add_axes([0.1,0.1,0.75,0.75])
#fig.title('Hierarchical Clustering Dendrogram')
ax.set_title("Hierarchical Clustering Dendrogram")
ax.set_xlabel("distance")
ax.set_xlabel("name")
dendrogram(
Linkage_Matrix,
orientation ="left",
leaf_rotation=0.,
leaf_font_size=12.,
labels = list(data.loc[:,"name"])
)
ax.set_yticklabels(list(data.loc[:,"name"]), minor=False)
ax.yaxis.set_label_position('right')
ax.yaxis.tick_right()
plt.savefig("plt1.png", dpi = 320, format= "png", bbox_inches=None)但不幸的是,它没有保存轴,而我留下了一些空间,如下所示:
Matplotlib savefig does not save axes
Why is my xlabel cut off in my matplotlib plot?
Matplotlib savefig image trim Plotting hierarchical clustering dendrograms for large data sets Dendrogram generated by scipy-cluster customisation我在控制台中有一个正确的显示,我可以保存它,但是dpi不是很好,而且理想情况下,我也希望切换到svg,以便以后能够设置可读性级别。
任何见解都将不胜感激。
发布于 2017-07-11 14:52:02
移除这一行
ax = fig.add_axes([0.1,0.1,0.75,0.75])在plt.savefig()中设置plt.savefig()使它对我有用。
此外,由于您正在用熊猫加载数据,请注意如何将'name‘列声明为索引,并使用这些索引值作为标签。
from matplotlib import pyplot as plt
from scipy.cluster.hierarchy import dendrogram, linkage
import numpy as np
import pandas as pd
data = pd.read_csv('input.txt', header=0, index_col=['name'], sep="\t")
data = data.fillna(0)
link_matrix = linkage(data, 'ward')
fig, ax = plt.subplots(1, 1, figsize=(20,200))
ax.set_title('Hierarchical Clustering Dendrogram')
ax.set_xlabel('distance')
ax.set_ylabel('name')
dendrogram(
link_matrix,
orientation='left',
leaf_rotation=0.,
leaf_font_size=12.,
labels=data.index.values
)
ax.yaxis.set_label_position('right')
ax.yaxis.tick_right()
plt.savefig('plt1.png', dpi=320, format='png', bbox_inches='tight')https://stackoverflow.com/questions/45033052
复制相似问题