Цвета для категорий в гистограммах matplotlib - PullRequest
1 голос
/ 19 мая 2019

Я хочу сделать мою гистограмму так, чтобы мои цвета соответствовали категориям, только для того, чтобы разделить и сгруппировать мой фрейм данных, чтобы реорганизовать его.Уже достигнуты некоторые результаты с некоторым кодом.Но мой код слишком капризный, я хотел бы знать, есть ли способ сделать его лучше.

pokecolor = {'Grass': '#78C850', 'Normal':'#A8A878','Fire':'#F08030','Fighting':'#C03028','Water':'#6890F0',           'Flying':'#A890F0','Poison':'#A040A0','Electric':'#F8D030','Ground':'#E0C068','Psychic':'#F85880','Rock':'#B8A038','Ice':'#98D8D8','Bug':'#A8B820','Dragon':'#7038F8','Ghost':'#705898','Dark':'#705848','Steel':'#B8B8D0','Fairy':'#EE99AC'}

df_poke['Type 1 color'] = df_poke['Type 1'].map(lambda x: pokecolor[x])

tipo1 = df_poke.loc[:,'Type 1'].value_counts(ascending=True)
tipo1.plot(kind='barh', grid=True, figsize=(15,8),
          xticks= [n for n in range(0,111, 10)],
          color=tipo1.reset_index()['index'].apply(lambda x : pokecolor[x]))

Я хотел бы не использовать "tipo1", сбросить его индекс и применить pokecolor кэто.

1 Ответ

0 голосов
/ 19 мая 2019

Когда вы строите график Series с bar, он будет использовать разные цвета для каждой полосы. Замените эти цвета, указав новый список, выровненный по индексу .value_counts:

Пример данных

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

np.random.seed(123)
df = pd.DataFrame({'Type 1': np.random.choice(list(pokecolor.keys()), 600)})

Код:

s = df['Type 1'].value_counts()
s.plot(kind='barh', figsize=(6,5), color=s.index.map(pokecolor)) 
plt.show()

Выход:

enter image description here

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