Измените цвета в сложенном барплоте из dataframe.plot - PullRequest
0 голосов
/ 05 февраля 2020

Мне нужно иметь возможность изменять цвета каждого столбца этого столбчатого графика:

enter image description here

Код в настоящее время:

my_colors = [(x/10.0, x/20.0, 0.75) for x in range(len(df))] 
ax = df.T.plot(kind='bar', stacked=True,color = my_colors,alpha = 0.8,width = 0.7)

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

Какому списку my_colors должно нравиться менять цвет для каждой части графика?

1 Ответ

1 голос
/ 05 февраля 2020

Если вы строите столбцы из нескольких столбцов (или строк и используете транспонирование .T), pandas назначит разные цвета каждому столбцу. Так что только 2 разных цвета в вашем случае. Будут использованы первые два элемента вашего цветового списка.

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

Некоторые примеры кода, чтобы показать, как это может работать:

import matplotlib.pyplot as plt
import pandas as pd
import random

d = {a: [random.randint(2, 5), random.randint(3, 7)] for a in list('abcdefghij')}

df = pd.DataFrame(d)
my_colors0 = [plt.cm.plasma(i / len(df.columns) / 2 + 0.5) for i in range(len(df.columns))]
ax = df.T[0].plot(kind='bar', color=my_colors0, width=0.7)
my_colors1 = [plt.cm.plasma(i / len(df.columns) / 2) for i in range(len(df.columns))]
ax = df.T[1].plot(kind='bar', bottom=df.T[0], color=my_colors1, width=0.7, ax=ax)

plt.show()

sample plot

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