Python matplotlib如何将颜色映射到';x值';在饼图中

Python matplotlib如何将颜色映射到';x值';在饼图中,python,matplotlib,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[

我有一个看起来像

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

如何将彩色地图传递到plotfunction中,使每个市场的颜色在所有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()

有人问了一个类似的问题