【问题标题】:Matplotlib subplots size not equalMatplotlib 子图大小不相等
【发布时间】:2017-07-25 18:10:37
【问题描述】:

我正在使用 subplot 来显示一些数字,但是标签与最后一个 subplot 混合在一起,因此这些图的大小不相等。而前5个不是完美的圆。

这是我的代码:

for i in range(6):
    plt.subplot(231 + i)
    plt.title("Department " + depts[i])
    labels = ['Male', 'Female']
    colors = ['#3498DB', '#E74C3C']
    sizes = [male_accept_rates[i] / (male_accept_rates[i] + female_accept_rates[i]),
             female_accept_rates[i] / (male_accept_rates[i] + female_accept_rates[i])]
    patches, texts = plt.pie(sizes, colors=colors, startangle=90)
plt.axis('equal')
plt.tight_layout()
plt.legend(labels, loc="best")
plt.show()

这是输出:

谁能给我一些建议?非常感谢。

【问题讨论】:

    标签: matplotlib graph machine-learning jupyter-notebook data-analysis


    【解决方案1】:

    看来plt.axis('equal') 仅适用于最后一个子图。所以你的解决方法是把那行代码放在循环中。

    所以:

    import numpy as np
    import matplotlib.pyplot as plt
    
    depts = 'abcdefg'
    male_accept_rates =  np.array([ 2, 3, 2, 3, 4, 5], float)
    female_accept_rates= np.array([ 3, 3, 4, 3, 2, 4], float)
    
    for i in range(6):
        plt.subplot(231 + i)
        plt.title("Department " + depts[i])
        labels = ['Male', 'Female']
        colors = ['#3498DB', '#E74C3C']
        sizes = [male_accept_rates[i] / (male_accept_rates[i] + female_accept_rates[i]),
                 female_accept_rates[i] / (male_accept_rates[i] + female_accept_rates[i])]
        patches, texts = plt.pie(sizes, colors=colors, startangle=90)
        plt.axis('equal')                                                                                          
    plt.tight_layout()                                                                                             
    plt.legend(labels, loc="best")                                                                                 
    plt.show()
    

    现在产生这个:

    【讨论】:

    • 只是想问一个后续问题,标签放在最后一个馅饼上,这不是我想要的。有没有办法将标签放在其他地方?谢谢。
    • 是的,默认情况下,将为最新的子图绘制图例。为了获得一组子图的单个图例,我会看这里:stackoverflow.com/questions/9834452/… 我尝试了这些解决方案,但它们对我来说并不完美,但我的 matplotlib 版本有点不同。它们可能对你有用。
    猜你喜欢
    • 2016-10-12
    • 2017-03-01
    • 2022-01-07
    • 2015-07-15
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多