Matplotlib子图大小不相等

时间:2017-03-06 01:08:18

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

我使用子图来显示一些数字,但是标签与最后一个子图混合在一起,所以这些图的大小不一样。而前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()

以下是输出: piecharts

是谁可以给我一些建议?非常感谢。

1 个答案:

答案 0 :(得分: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()

立即生成: enter image description here