2017-06-12 33 views
4

pandas.DataFrame.plot是繪製數據框中數據的便捷方法。但是,我不明白如何使用這種方法來格式化軸。例如,使用熊貓繪圖方法創建的圖表上的x軸格式

import pandas as pd 
import datetime 

df = pd.DataFrame(index = [datetime.datetime(2016, 7, 2, 0, 0), 
        datetime.datetime(2016, 8, 6, 0, 0), 
        datetime.datetime(2016, 9, 13, 0, 0), 
        datetime.datetime(2016, 10, 26, 0, 0), 
        datetime.datetime(2016, 11, 2, 0, 0)], 
        data = {'total' : [5, 3, 1, 0, 2]}) 

df 

輸出

  total 
2016-07-02 5 
2016-08-06 3 
2016-09-13 1 
2016-10-26 0 
2016-11-02 2 

現在有了熊貓劇情方法繪製:

df.plot(kind='bar') 

example bar chart

我寧願x軸只是有標籤作爲月份的三字母格式 - 七月八月九月十月十一月

這是可能與熊貓陰謀方法,或者我應該用matplotlib而不是建立一個圖表?

回答

2

我發現了一個簡單的方法來改變X標籤只有一個月。

import pandas as pd 
import datetime 

df = pd.DataFrame(index = [datetime.datetime(2016, 7, 2, 0, 0), 
        datetime.datetime(2016, 8, 6, 0, 0), 
        datetime.datetime(2016, 9, 13, 0, 0), 
        datetime.datetime(2016, 10, 26, 0, 0), 
        datetime.datetime(2016, 11, 2, 0, 0)], 
        data = {'total' : [5, 3, 1, 0, 2]}) 

ax = df.plot(kind='bar') 
x_labels = df.index.strftime('%b') 
ax.set_xticklabels(x_labels) 

plt.show() 

example chart

5

如果你想顯示的圖形作爲一個明確的條形圖,即等距條獨立於實際的日期,你可以重新格式化xticklabels,

f = lambda x: datetime.datetime.strptime(x, '%Y-%m-%d %H:%M:%S').strftime('%b') 
ax.set_xticklabels([ f(x.get_text()) for x in ax.get_xticklabels()]) 

其中%b是一個月的縮寫名稱和斧子你的情節的軸。

完整的示例:

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

df = pd.DataFrame(index = [datetime.datetime(2016, 7, 2, 0, 0), 
        datetime.datetime(2016, 8, 6, 0, 0), 
        datetime.datetime(2016, 9, 13, 0, 0), 
        datetime.datetime(2016, 10, 26, 0, 0), 
        datetime.datetime(2016, 11, 2, 0, 0)], 
        data = {'total' : [5, 3, 1, 0, 2]}) 

ax = df.plot(kind='bar') 

f = lambda x: datetime.datetime.strptime(x, '%Y-%m-%d %H:%M:%S').strftime('%b') 
ax.set_xticklabels([ f(x.get_text()) for x in ax.get_xticklabels()]) 

plt.show() 

enter image description here

+0

感謝,這實在是讓我瞭解到。 –