2017-01-07 213 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()) –