我正在基于链接创建六个不同的树形图。我有一个for循环,它循环六种不同的连杆类型。我想在一张图上打印出所有六个树突图(使用subplot),但不知道如何做到这一点。我的尝试如下-注释掉的行是用于打印子图的代码。提前感谢您的帮助。
import matplotlib.pyplot as plt
from scipy.cluster import hierarchy
linkage = ['single', 'complete', 'average', 'weighted', 'centroid', 'ward']
for item in linkage:
#for i in range(1,7):
Z = hierarchy.linkage(X, item)
#plt.subplot(1,2,i)
plt.figure(figsize=(25, 10))
plt.xlabel('State',size=12)
hierarchy.dendrogram(Z,
leaf_rotation=90, # rotate the labels on X-axis
leaf_font_size=12,
labels=Label)
plt.title('Hierarchical Clustering on Covid Data:' + item, size=20)
每次调用plt.figure
时,matplotlib将创建一个新的图形(plot)。因为这是在for循环中,所以当前要为每个树突图创建一个新的绘图。您可以将plt.figure
移出for循环,但是您需要花费一些精力来放置树形图,以便它们仍然是可读的。我看到你的代码注释,你已经使用matplotlib.pyplot.subplots之前?下面是将每个树突图放在主图中唯一的子图中的方法:
import matplotlib.pyplot as plt
from scipy.cluster import hierarchy
linkage = ['single', 'complete', 'average', 'weighted', 'centroid', 'ward']
fig, axes = plt.subplots(1, len(linkage), sharey=True)
for ax, item in zip(linkage, axes): # match each linkage to a matplotlib axis
Z = hierarchy.linkage(X, item)
ax.set_xlabel('State', fontdict={'size':12})
hierarchy.dendrogram(Z,
leaf_rotation=90, # rotate the labels on X-axis
leaf_font_size=12,
labels=Label,
ax=ax # We have to tell scipy where to draw the dendogram
)
ax.set_title('Hierarchical Clustering on Covid Data:' + item, fontdict={'size':20})