通过这段代码我在一个pdf中生成多个图(PIE聊天)
import matplotlib.pyplot as plt
from matplotlib.backends.backend_pdf import PdfPages
pp = PdfPages('long.pdf')
lists = [
([1, 3, 6], ["bells label", "whistles label", "pasta label"], 'title-1'),
([11, 3, 6, 5], ["red colour", "blue colour", "green colour", "back colour"], 'title-2')
]
for x_list,label_list,title in lists:
plt.figure(figsize=(2,2), dpi=100)
# plt.axes([0.1, 0.1, 0.8, 0.8])
plt.axis('equal')
explode = [0.2]
explode += [0 for x in range(len(x_list)-1)]
plt.pie(x_list, labels=label_list, explode=explode, autopct="%1.1f%%", startangle=90)
plt.title(title)
plt.savefig(pp, format='pdf')
# pp.savefig()
pp.close()
但我得到这样的输出,非常不清楚/重叠/剥离。
我该如何解决这个问题?
PS:我需要你在这个图书馆的专业知识 如何在外观/结构方面改进这一点? 任何建议都将不胜感激。
答案 0 :(得分:2)
您需要使用与您的图形尺寸兼容的文字尺寸 您可以减少文本或增加图形大小 此外,您可以增加两侧的垫(这样可以减少图形占用的空间,并为标签和标题提供更多的位置。
例如:
for x_list,label_list,title in lists:
figure(figsize=(4,4), dpi=100) # increase figure size
plt.axis('equal')
subplots_adjust(left=0.3, right=0.6) # give more space to the borders
explode = [0.2]
explode += [0 for x in range(len(x_list)-1)]
plt.pie(x_list, labels=label_list, explode=explode, autopct="%1.1f%%", startangle=90)
plt.title(title)
plt.savefig(pp, format='pdf')
pp.close()
这会产生下面的pdf(导出到png)。我夸大了填充和数字大小。你应该根据自己的需要进行微调。