我有两个大熊猫系列。它们每个都有五个索引,范围(“非常低”,“低”,“中”,“高”,“非常高”)。该系列是通过将一个数据框架分为两个人口统计然后获取价值计数而以编程方式创建的特定的列。
这两个系列的创建是通过获取一个熊猫数据框,根据每一行是否由特定的人口统计信息添加而划分,并提取一列的值计数。
demog1, demog2 = (df[df.Demographic == 'demog'], df[df.Demographic != 'demog'])
save_pie_chart(demog1, 'Column Name', 'demog1.png')
save_pie_chart(demog2, 'Column Name', 'demog2.png')
当我从该系列创建饼图时,每个饼图的索引都放置在不同的位置和颜色。我想确保两次它们具有相同的相对位置和相同的颜色。
我正在使用的当前方法是手动排序标签和数据,如下所示:
def save_pie_chart(df, col, path):
series = df[col].value_counts()
if 'Medium' in series.index:
labels = []
sizes = []
for label in ['Very low', 'Low', 'Medium', 'High', 'Very high']:
labels.append(label)
sizes.append(series[label])
series = sizes
else:
labels = series.keys()
fig, ax = plt.subplots()
ax.pie(series, labels=labels, autopct='%1.0f%%')
ax.axis('equal')
fig.savefig(path)
在上面,如果我在提取值计数后打印出series
变量,则会得到以下输出:
Low 15
Very high 14
Very low 11
Medium 11
High 10
Name: Column Name, dtype: int64
High 95
Low 89
Medium 85
Very low 85
Very high 85
Name: Column Name, dtype: int64
我是否有一种内置的方式告诉matplotlib:“我要按此顺序排列标签”,然后将标签传递给它?