2017-01-07 17 views
6

Я пытаюсь использовать объект matplotlib.colormap в сочетании с функцией pandas.plot:использования Matplotlib палитры с пандами dataframe.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() 

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

ответ

6

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() 

enter image description here

Другого способ заключается в использовании Matplotlib непосредственно.

+0

Спасибо, что помогло! Я закончил использовать colors = cm.RdYlGn (np.logspace (0,1, len (df)) * df ['days']. Values ​​/ df ['days']. Max()) –