2015-04-03 130 views
0

我有日期時間值包括微秒的熊貓數據幀:大熊貓/ matplotlib日期時間刻度標記

      column1 column2 
time                   
1900-01-01 10:39:52.887916 19363.876 19362.7575 
1900-01-01 10:39:53.257916 19363.876 19362.7575 
1900-01-01 10:39:53.808007 19363.876 19362.7575 
1900-01-01 10:39:53.827894 19363.876 19362.7575 
1900-01-01 10:39:54.277931 19363.876 19362.7575 

我繪製數據幀如下:圖像低於該微秒上

def plot(df): 
    ax = df.plot(y='column1', figsize=(20, 8)) 
    df.plot(y='column2', ax=ax) 

    ax.get_yaxis().get_major_formatter().set_useOffset(False) 

    mpl.pyplot.show() 

通知顯示爲%f而非其實際值。

也就是說,而非10:39:52.887916它顯示10:39:52.%f

我怎樣才能在刻度標記(即使是隻有幾顯著位)顯示實際微秒?

enter image description here

+0

您是否在某處設置了DateFormatter?這看起來像一個傳遞給DateFormatter的字符串格式中的一個leetle typo。有些東西不是默認的;當我運行你的代碼時,我得到了一個完全不同的xticklabels錯誤集合。可能是熊貓,可能是海豹? – cphlewis 2015-04-03 04:36:35

+0

我沒有設置它,也許它是熊貓。我沒有使用seaborn – 2015-04-03 04:55:15

回答

2

您應該能夠在主刻度設置爲你想要的格式,使用set_major_formatter

In [14]: 

import matplotlib as mpl 
import matplotlib.dates 
df = pd.DataFrame({'column1': [1,2,3,4], 
        'column2': [2,3,4,5]}, 
        index =pd.to_datetime([1e8,2e8,3e8,4e8])) 
def plot(df): 
    ax = df.plot(y='column1', figsize=(20, 8)) 
    df.plot(y='column2', ax=ax) 

    ax.get_yaxis().get_major_formatter().set_useOffset(False) 
    ax.get_xaxis().set_major_formatter(matplotlib.dates.DateFormatter('%H:%M:%S.%f')) 

    #mpl.pyplot.show() 
    return ax 

print df 
          column1 column2 
1970-01-01 00:00:00.100000  1  2 
1970-01-01 00:00:00.200000  2  3 
1970-01-01 00:00:00.300000  3  4 
1970-01-01 00:00:00.400000  4  5 

enter image description here

如果問題不消失,那麼我認爲某處在代碼中格式化程序格式被錯誤地指定,即%%f而不是%f,它返回一個文字'%'字符。

+0

嗯,不知道我的代碼中發生了什麼。我抄錄了您的摘錄,並且正確打印了微秒。在我的代碼中,我完成了與你完全相同的工作,但是按照我所描述的那樣獲取'%f'!很奇怪! – 2015-04-10 01:31:52

+0

我用'df = my_df'替換了你的'df = pd.Dataframe'調用,並將micros打印爲'%.f',所以這與數據幀有關 – 2015-04-10 01:37:33