我的数据框有 3 列,例如:
> A B C
red yes 100
red no 25
blue yes 200
blue no 20
green yes 40
green no 10
yellow yes 40
yellow no 20
我想为 B 列和 A 列的每个答案制作一个饼图,并在该部分给出与其分配的标签相同的颜色。
例如,我希望饼图上的部分的颜色为红色,分配为红色标签,蓝色分配为蓝色,等等。 有时标签不能是颜色,但我想选择在该标签上分配的颜色。
预期输出:
我尝试了这段代码:
import pandas as pd
import matplotlib.pyplot as plt
df_bis = df.groupby(['A','B'], axis = 0).agg('count')
df_bis['C'].plot(kind='pie',
figsize=(5,4),
subplots=True,
autopct='%1.1f%%', # add in percentages
startangle=90, # start angle 90°
shadow=True, # add shadow
colors =
{'red':"red",'blue':"blue",'yellow':"gold",'green':"green"}
)
plt.axis('equal') # Sets the pie chart to look like a circle.
但是这不起作用。
你有想法吗? 谢谢
最佳答案
在这里,试试这个:
import pandas as pd
import matplotlib.pyplot as plt
data_frame = pd.read_csv("test.csv")
df_yes = data_frame.loc[data_frame['B']=='yes',:]
df_no = data_frame.loc[data_frame['B']=='no',:]
fig, (ax1, ax2) = plt.subplots(1, 2)
# plot each pie chart in a separate subplot
ax1.pie(df_yes["C"], labels=df_yes["A"], autopct='%1.1f%%',
shadow=True, colors=df_yes["A"])
ax1.set_title('Yes')
ax2.pie(df_no["C"], labels=df_no["A"], autopct='%1.1f%%',
shadow=True, colors=df_no["A"])
ax2.set_title('No')
plt.show()
注意:您可以调整图表(使用文本颜色、图形大小、图表样式等)并根据您的要求添加图例。我没有添加图例,并且在饼图上留下了标签。
您可以删除标签 (labels=df_yes["A"]
) 并向每个图表添加以下代码以生成图例:
ax1.legend(labels=df_yes["A"], loc="upper center")
关于python - 为分类变量 Python 的每个值分配特定颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55283197/