2017-01-07 247 views
6

我试图与pandas.plot功能一起使用matplotlib.colormap对象大熊猫:使用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 .p​​lot()函数时,我不知道该怎么做,因为这个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()) –