首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Python中更改饼图切片的顺序

如何在Python中更改饼图切片的顺序
EN

Stack Overflow用户
提问于 2021-02-17 18:52:56
回答 1查看 600关注 0票数 2

我想改变饼图中切片的顺序。目前,切片按降序排列。我希望图表的切片按以下顺序排列:是>有时>大多数时间>否

我使用以下代码:

代码语言:javascript
复制
colors = [ '#99f3bd', '#fbaccc','#a8df65', '#ff7b54']
fig, ax = plt.subplots(figsize=(5,15))
ax.set_title('Treatment Group', fontsize=25, fontname="Times New Roman Bold")
ax = df['q6_t'].value_counts(normalize=True).plot.pie(autopct='%1.0f%%', colors = colors)
ax.set_ylabel("")
plt.savefig('q6_t.png', bbox_inches = 'tight', transparent=True)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-17 21:36:33

令我惊讶的是,我没有找到这个可能是常见问题的副本。如果您想要饼图中的特定顺序,则必须对由值计数生成的pandas序列进行排序:

代码语言:javascript
复制
import matplotlib.pyplot as plt
import pandas as pd

#corresponding color-label pairs
colors = ['#99f3bd', '#fbaccc',   '#a8df65',           '#ff7b54']
labels = ["Yes",     "Sometimes", "Most of the times", "No"]

#test data generation
import numpy as np
n=10
np.random.seed(1234)
df=pd.DataFrame({"A": np.random.random(n), "q6_t": np.random.choice(labels, n)})
#print(df)


fig, ax = plt.subplots(figsize=(8, 8))
ax.set_title('Treatment Group', fontsize=25, fontname="Times New Roman Bold")
#reindex(labels) sorts the index of the value counts according to the list labels
ax = df['q6_t'].value_counts(normalize=True).reindex(labels).plot.pie(autopct='%1.0f%%', colors = colors)

ax.set_ylabel("")
plt.show()

示例输出:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66240473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档