我有一个看起来像的数据框
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和熊猫的最新版本
答案 0 :(得分:3)
您可以为不同类别创建查找字典,并使用它为每个饼图创建颜色列表。
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()