Python matplotlib, как отобразить цвета на «значения x» на круговой диаграмме - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть датафрейм, похожий на

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

Как я могу передать цветовую карту в функцию plot, чтобы цвет для каждого рынка был одинаковым во всех 3 круговых диаграммах? Если это невозможно, у кого-нибудь есть другие предложения, как этого добиться, может быть, путем добавления фиктивных строк на полпути элегантным способом?

Примечание. Я использую py3.6 и последнюю версию на pandas

1 Ответ

0 голосов
/ 03 сентября 2018

Вы можете создать поисковый словарь для разных категорий и использовать его для создания списка цветов для каждой круговой диаграммы.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...