pandas/matplotlib 日期时间刻度标签

pandas/matplotlib datetime tick labels

我有一个 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.%f

而不是 10:39:52.887916

如何在刻度标签中显示实际的微秒数(即使只有几位有效数字)?

您应该能够将主要刻度设置为您想要的格式,使用 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

如果问题确实消失了,那么我认为代码中的某处格式化程序格式指定不正确,即 %%f 而不是 %f,其中 returns 是文字 '%' 字符.