Colormapping круговые сюжеты серии панд
У меня есть двойная кольцевая диаграмма, и я знаю, как раскрасить карту, если я строю DF, но это не работает с сериями. Как поставить:
colors=outside['group1'].map(colors_outside),
colors=middle['group2'].map(colors_middle),
в пределах plt.pie()
часть? Это пример кода:
df1 = pd.DataFrame({'group1': ['bar', 'bar', 'baz', 'baz', 'baz', 'baz'],
'group2': ['one', 'two', 'one', 'two', 'three', 'four'],
'count': np.random.randint(1,5, 6)})
# making the colormap
colors_outside = {'bar': '#FF1493', 'baz': '#FFFF00'}
colors_middle= {'one': '#FF3F33', 'two': '#8175E1','three':'#0A0096', 'four':'#960028'}
outside = df1.groupby('group1')['group1'].count()
middle = df1.groupby(['group1','group2']).count()
# making the donut
plt.pie(outside, startangle=90, labels=outside.index) # here I need: colors=outside['group1'].map(colors_outside),
plt.pie(middle, radius=0.75, labels=labels, startangle=90, labeldistance=0.75 ) # here I need: colors=middle['group2'].map(colors_middle),
centre_circle = plt.Circle((0,0),0.5,color='black', fc='white')
fig = plt.gcf()
fig.gca().add_artist(centre_circle)
plt.axis('equal')
plt.tight_layout()
plt.show()
1 ответ
Вы можете получить цвета следующим образом:
outside_colors = [colors_outside[c] for c in outside.index]
middle_colors = [colors_middle[c] for c in middle.index.get_level_values('group2')]
Затем используйте их внутри сюжета:
plt.pie(outside, startangle=90, labels=outside.index, colors=outside_colors)
plt.pie(middle, radius=0.75, labels=labels, startangle=90, colors=middle_colors, labeldistance=0.75)