pandas / matplotlib日期时间刻度标签

时间:2015-04-03 02:21:06

标签: python pandas matplotlib

我有一个带有日期时间值的pandas数据帧,包括微秒:

                            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

1 个答案:

答案 0 :(得分: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,它返回一个文字'%'字符。< / p>