Python matplotlib如何将颜色映射到饼图中的 'x-values'

标签 python matplotlib

我有一个看起来像的数据框

df=pd.DataFrame({'product': [0,0,1,1,1,1,1,2,2,2], 'market': [1,2,1,2,5,6,7,1,6,7], 'value': [500,300,100,200,400,100,200,100,300,900]})
fig, axes = plt.subplots(nrows=1, ncols=3)
for m in range(3):
    df.loc[df['product']==m].plot(ax=axes[m], kind='pie', y='value', figsize=(15,5))

Plot

如何将颜色图传递到绘图函数中,以便每个市场的颜色在所有 3 个饼图中都相同? 如果这是不可能的,是否有人有任何其他建议如何实现这一目标,也许通过以半优雅的方式添加虚拟行?

注意。我正在使用 py3.6 和 pandas 的最新版本

最佳答案

您可以为不同类别创建一个查找字典,并使用它为每个饼图创建颜色列表。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

df=pd.DataFrame({'product': [0,0,1,1,1,1,1,2,2,2], 
                 'market': [1,2,1,2,5,6,7,1,6,7], 
                 'value': [500,300,100,200,400,100,200,100,300,900]})

cdict = dict(zip(np.unique(df["market"].values), plt.cm.tab10.colors))

fig, axes = plt.subplots(nrows=1, ncols=3)
for m in range(3):
    data = df.loc[df['product']==m]
    data.plot(ax=axes[m], kind='pie', y='value', figsize=(15,5), 
              colors=[cdict[v] for v in data["market"]])

plt.show()

enter image description here

关于Python matplotlib如何将颜色映射到饼图中的 'x-values',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52147593/

相关文章:

python - "Clean"在 matplotlib 中使用单词作为标记的方法?并使字体大小和颜色不同?

python - 从离开的位置继续阅读文件

python - 陷入 Python 中的基本类继承(Learn Python The Hard Way ex42)

python - 属性错误 : 'time.struct_time' object has no attribute 'toordinal'

python - 用 matplotlib 表示体素

python - 在 matplotlib 中永久注册颜色图

python - 无法将指标值推送到 InfluxDB

python - 通过命令行向 Python Class 中传入一个值

python - 检查一个数字是否只有 2 个数字的组合

python - plotly 属性错误: 'Figure' object has no attribute 'show'