2016-01-11 37 views
1

我正在嘗試使用matplotlib和pandas創建一個y軸範圍從0%到100%的條形圖。我得到的範圍只有0% - 50%。現在,因爲我所有的酒吧都在10%左右,所以這不是災難性的。這只是令人沮喪,可能會干擾比較其他完整範圍的地塊。爲什麼我不能在熊貓系列產生的圖上設置y軸範圍?

我正在使用的代碼(大致)如下:

from matplotlib import pyplot as plt 
import pandas as pd 

labels = list(cm.index) #Where cm is a DataFrame 

for curr in sorted(labels): 
    xa = cm[curr] # Pulls 1 column out of DataFrame to be plotted 
    xplt = xa.plot(kind='bar', rot = 0, ylim = (0,1)) 
    xplt.set_yticklabels(['{:3.0f}%'.format(x*10) for x in range(11)]) 
    plt.show() 

有什麼明顯錯誤或丟失?


一個情節,我得到的樣本是這樣的:

enter image description here

奇怪的是,當我省略set_yticklabels聲明,我得到這個:

enter image description here

我現在意識到第一個圖不僅僅是奇怪的縮放,而且還給出了不正確的結果。第二個圖中顯示的值是正確的。我猜錯誤在set_yticklabels聲明中,但我不知道它會是什麼。

+0

你能不能表現出任何例子數據幀和情節? –

+0

您的代碼不應該正常工作,因爲您在'labels'中使用'index'值,但'curr'應該是列名稱而不是索引值。 –

回答

4

貌似keywordylim工作正常pandas.DataFrame.plot.bar()

df = pd.DataFrame(np.random.randint(low=0, high=10, size=(10, 2)), columns=['low', 'high']) 
df.high = df.high * 10 

    low high 
0 3 10 
1 2  0 
2 7 20 
3 3 90 
4 7 60 
5 0 40 
6 1  0 
7 3 70 
8 1 80 
9 6 90 

for col in df: 
    df[col].plot.bar(ylim=(0, 100)) 

給出:

Values ranging 0-10 Values ranging 0-100

+0

畢竟這有幫助嗎? – Stefan