python - 为分类变量 Python 的每个值分配特定颜色

标签 python pandas charts colors

我的数据框有 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 列的每个答案制作一个饼图,并在该部分给出与其分配的标签相同的颜色。

例如,我希望饼图上的部分的颜色为红色,分配为红色标签,蓝色分配为蓝色,等等。 有时标签不能是颜色,但我想选择在该标签上分配的颜色。

预期输出:

enter image description here

我尝试了这段代码:

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()


测试 CSV 如下所示:
enter image description here
结果如下:
enter image description here

注意:您可以调整图表(使用文本颜色、图形大小、图表样式等)并根据您的要求添加图例。我没有添加图例,并且在饼图上留下了标签。

您可以删除标签 (labels=df_yes["A"]) 并向每个图表添加以下代码以生成图例:

ax1.legend(labels=df_yes["A"], loc="upper center")

关于python - 为分类变量 Python 的每个值分配特定颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55283197/

相关文章:

javascript - 如何在 Angular 10 项目中使用 chart.js 在条形图上显示数据标签?

php - 有类似的用于绘制图表(如 Google Charts)的库/类吗?

python - 无需替换数组的快速组合 - NumPy/Python

python - 将值转换为 NumPy 数组中的行索引

python - 上下文管理器可以在 Python 中多次运行包含的 block 吗?

python - 如何使用 pandas 中的 .at 方法返回特定数据类型?

python - matplotlib 中的表格图例

python - python pandas 转换 Unix 时间戳

python - 如何将键映射到多个值到数据框列?

excel - 圆环图的条件格式