【发布时间】:2021-11-30 17:45:21
【问题描述】:
您好,我在使用 matplotlib 显示然后整齐地保存 7 个子图时遇到问题。该图由第一行的饼图和第二行的直方图组成。
我已经设法让某些东西正常工作,但是在尝试将所有子图都放在一个图中时,我无法设法让某些东西达到良好的可读性。重要的是在保存文件时能够输出一个包含所有组件的png文件。
第一个示例是“正确的”,但在饼图和直方图之间产生了很大的空间:
这是一个代码“示例”(尽管不是我所拥有的,但这是与我可以分享的问题最接近的工作示例):
histo_1 = np.random.choice(500, 100, replace=True)
histo_2 = np.random.choice(250, 7000, replace=True)
histo_3 = np.random.choice(150, 1500, replace=True)
histo_4 = np.random.choice(2000, 250, replace=True)
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
sizes = [15, 30, 45, 10]
f = plt.figure(figsize = (14, 15))
sn.set()
sn.color_palette("hls", 8)
ax = f.add_subplot(2,4,1)
plt.pie(sizes, labels = labels, autopct='%1.1f%%', textprops={'fontsize': 13})
plt.title("Distribution")
ax = f.add_subplot(2,4,2)
plt.pie(sizes, labels = labels, autopct='%1.1f%%', textprops={'fontsize': 13})
plt.title("Distribution")
ax = f.add_subplot(2,4,3)
plt.pie(sizes, labels = labels, autopct='%1.1f%%', textprops={'fontsize': 13})
plt.title("Distribution")
ax = f.add_subplot(2,4,5)
plt.hist(histo_1, bins='fd', color = "cornflowerblue", edgecolor='white', linewidth=1.2)
plt.title("Distribution 1")
ax1 = f.add_subplot(2,4,6)
plt.hist(histo_2, bins='fd', color = "indianred", edgecolor='white', linewidth=1.2)
plt.title("Distribution 2")
ax2 = f.add_subplot(2,4,7)
plt.hist(histo_3, bins='fd', color = "seagreen", edgecolor='white', linewidth=1.2)
plt.title("Distribution 3")
ax3 = f.add_subplot(2,4,8)
plt.hist(histo_3, bins='fd', color = "peru", edgecolor='white', linewidth=1.2)
plt.title("Distribution 4")
plt.tight_layout()
plt.show()
让它看起来不错的唯一方法是有两个分开的数字,例如:
histo_1 = np.random.choice(500, 100, replace=True)
histo_2 = np.random.choice(250, 7000, replace=True)
histo_3 = np.random.choice(150, 1500, replace=True)
histo_4 = np.random.choice(2000, 250, replace=True)
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
sizes = [15, 30, 45, 10]
f = plt.figure(figsize = (14, 15))
sn.set()
sn.color_palette("hls", 8)
ax = f.add_subplot(1,3,1)
plt.pie(sizes, labels = labels, autopct='%1.1f%%', textprops={'fontsize': 13})
plt.title("Distribution")
ax = f.add_subplot(1,3,2)
plt.pie(sizes, labels = labels, autopct='%1.1f%%', textprops={'fontsize': 13})
plt.title("Distribution")
ax = f.add_subplot(1,3,3)
plt.pie(sizes, labels = labels, autopct='%1.1f%%', textprops={'fontsize': 13})
plt.title("Distribution")
plt.tight_layout()
plt.show()
f = plt.figure(figsize = (14, 8))
ax = f.add_subplot(1,4,1)
plt.hist(histo_1, bins='fd', color = "cornflowerblue", edgecolor='white', linewidth=1.2)
plt.title("Distribution 1")
ax1 = f.add_subplot(1,4,2)
plt.hist(histo_2, bins='fd', color = "indianred", edgecolor='white', linewidth=1.2)
plt.title("Distribution 2")
ax2 = f.add_subplot(1,4,3)
plt.hist(histo_3, bins='fd', color = "seagreen", edgecolor='white', linewidth=1.2)
plt.title("Distribution 3")
ax3 = f.add_subplot(1,4,4)
plt.hist(histo_3, bins='fd', color = "peru", edgecolor='white', linewidth=1.2)
plt.title("Distribution 4")
plt.tight_layout()
plt.show()
因此,我需要找到一种方法来减少图表/直方图之间的空间,或者找到一种方法将两个图形保存或拼接到一个文件中。
有人有建议吗?
谢谢
【问题讨论】:
标签: python matplotlib histogram pie-chart