【问题标题】:Matplotlib labels are stripped/overlappedMatplotlib 标签被剥离/重叠
【发布时间】:2023-03-17 19:11:02
【问题描述】:

通过这段代码,我在一个 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:我需要您在这个库中的专业知识。
我如何在外观/结构上改善这一点?
任何建议将不胜感激。

【问题讨论】:

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


    【解决方案1】:

    您需要使用与您的图形大小兼容的文本大小。
    要么减少文本,要么增加图形大小。
    另外,可以增加边的pad(这样可以减少图形占用的空间,给标签和标题更多的地方。

    例如:

    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)。我夸大了填充和图形大小。您应该根据自己的需要对其进行微调。

    猜你喜欢
    • 2012-08-29
    • 2014-03-16
    • 1970-01-01
    • 2012-01-08
    • 2010-10-24
    • 1970-01-01
    • 2013-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多