использование цветовой карты matplotlib с функцией pandas dataframe.plot

Я пытаюсь использовать объект matplotlib.colormap в сочетании с функцией pandas.plot:

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

df = pd.DataFrame({'days':[172, 200, 400, 600]})
cmap = cm.get_cmap('RdYlGn')
df['days'].plot(kind='barh', colormap=cmap)
plt.show()

Я знаю, что я должен каким-то образом сообщить палитре диапазон значений, которые он передает, но я не могу понять, как это сделать при использовании функции pandas .plot(), поскольку этот plot() не принимает vmin Например, параметры /vmax.


person Mischa Obrecht    schedule 07.01.2017    source источник


Ответы (1)


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

Чтобы применить разные цвета к каждой строке вашего фрейма данных, вы должны создать список цветов из выбранной палитры:

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

df = pd.DataFrame({'days':[172, 200, 400, 600]})
colors = cm.RdYlGn(np.linspace(0,1,len(df)))
df['days'].plot(kind='barh', color=colors)
plt.show()

введите описание изображения здесь

Другой способ — напрямую использовать matplotlib.

person Serenity    schedule 07.01.2017
comment
Спасибо, это помогло! В итоге я использовал colors = cm.RdYlGn(np.logspace(0,1,len(df))*df['days'].values/df['days'].max()) - person Mischa Obrecht; 08.01.2017