Matplotlib标签被剥离/重叠

时间:2014-09-20 07:38:14

标签: python python-2.7 python-3.x matplotlib

通过这段代码我在一个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()

但我得到这样的输出,非常不清楚/重叠/剥离。
我该如何解决这个问题?

enter image description here

PS:我需要你在这个图书馆的专业知识 如何在外观/结构方面改进这一点? 任何建议都将不胜感激。

1 个答案:

答案 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)。我夸大了填充和数字大小。你应该根据自己的需要进行微调。

enter image description here