【问题标题】:Plotting python pandas dataframe with timestamps as indices for x-axis shows iterating numbers绘制带有时间戳的 python pandas 数据帧作为 x 轴的索引显示迭代数字
【发布时间】:2020-05-26 04:42:07
【问题描述】:

有几天我尝试使用 pandas 和 Matplotlib 在我的轴上显示时间戳。但由于某种原因,它总是显示一些迭代数字,我对此无能为力。

这是我的代码:

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

%matplotlib
plt.ion()

df = pd.read_csv('~/Development/ProgressionMovement/Data/03-02-pull/44#03-02_07-49_measurePoints.csv', index_col = 'timestamp', parse_dates = True)

for column in df.columns:
    if column != 'timestamp':
        df[column] = pd.to_numeric(df[column], downcast='float')

for index, row in df.iterrows():
    for column in df.columns:
        if column != 'timestamp':
            df[column][index] = row[column] / 100

df.plot()

我已经尝试了很多,设置 x_ticks,将索引类型转换为其他类型等等(我不记得所有这些了)。但我总是只看到这些数字。充其量我只想看到分钟和秒。

我做错了什么?这不会那么难。

csv 看起来像这样:

还有这样的情节:

【问题讨论】:

    标签: python pandas csv datetime matplotlib


    【解决方案1】:

    好吧,“沃恩是上帝”给了我一些提示,我能够展示正确的 x 标签。代码现在看起来像这样:

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    import datetime
    import matplotlib.dates as dates
    
    %matplotlib
    plt.ion()
    
    df = pd.read_csv('~/Development/ProgressionMovement/Data/03-02-pull/44#03-02_07-49_measurePoints.csv', index_col = 'timestamp', parse_dates = True)
    
    for column in df.columns:
        if column != 'timestamp':
            df[column] = pd.to_numeric(df[column], downcast='float')
    
    for index, row in df.iterrows():
        for column in df.columns:
            if column != 'timestamp':
                df[column][index] = row[column] / 100
    
    ax=plt.gca()
    ax.set_xticks(df.index)
    
    xfmt = dates.DateFormatter('%M:%S:%f')
    ax.xaxis.set_major_formatter(xfmt)
    df.plot()
    

    这有点奇怪,但是使用交互式绘图工具,我必须运行最后一个代码块两次才能显示秒数。否则它会显示天、小时、分钟。

    【讨论】:

      【解决方案2】:

      考虑到创建的图形和 ax1 是子图, 在 x 轴上绘制时间时我的首选线是:

      import matplotlib.dates as mdates
      import matplotlib.pyplot as plt
      
      plt.gca().xaxis.set_major_locator(mdates.AutoDateLocator())
      
      ax1.xaxis.set_major_formatter(mdates.DateFormatter('%H:%M:%S'))
      
      ax1.set_xticks(datas)
      

      【讨论】:

        猜你喜欢
        • 2018-12-08
        • 2015-12-28
        • 2020-07-15
        • 2014-02-12
        • 2020-11-17
        • 2021-11-05
        • 1970-01-01
        • 2017-08-02
        • 1970-01-01
        相关资源
        最近更新 更多