簡體   English   中英

使用matplotlib在y軸上繪制24小時的時間序列

[英]Plotting a times series using matplotlib with 24 hours on the y-axis

如果我運行以下命令,它似乎可以正常工作,但是y軸僅限於數據中最早和最新的時間。 我希望它顯示從午夜到午夜。 我以為我可以用注釋掉的代碼來做到這一點。 但是,當我取消注釋時,我得到了正確的y軸,但沒有任何圖形。 我要去哪里錯了?

from datetime import datetime
import matplotlib.pyplot as plt

data = ['2018-01-01 09:28:52', '2018-01-03 13:02:44', '2018-01-03 15:30:27', '2018-01-04 11:55:09']
x = []
y = []

for i in range(0, len(data)):
    t = datetime.strptime(data[i], '%Y-%m-%d %H:%M:%S')
    x.append(t.strftime('%Y-%m-%d')) # X-axis = date
    y.append(t.strftime('%H:%M:%S')) # Y-axis = time

plt.plot(x, y, '.')
# begin = datetime.strptime('00:00:00', '%H:%M:%S').strftime('%H:%M:%S')
# end   = datetime.strptime('23:59:59', '%H:%M:%S').strftime('%H:%M:%S')
# plt.ylim(begin, end)
plt.show()

編輯:我還注意到x軸也不正確。 數據跳過1月2日,但我希望在軸上顯示,以便按比例縮放數據。

這是大大簡化的代碼版本,可處理超過2500個條目的一年數據。

如果您可以使用熊貓,請考慮以下方法:

import pandas as pd
data = pd.to_datetime(data, yearfirst=True)
plt.plot(data.date, data.time)
_=plt.ylim(["00:00:00", "23:59:59"])

情節

每個評論更新
可以使用matplotlib.dates模塊的LocatorFormatter方法調整X軸日期格式。 Locator找到刻度位置, Formatter指定希望標簽顯示的方式。

有時Matplotlib / Pandas正確無誤,而其他時候,您需要使用這些額外的方法確切地指出所需的內容。 在這種情況下,我不確定為什么會顯示這些數字,但是此代碼會將其刪除。

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

f, ax = plt.subplots()
data = pd.to_datetime(data, yearfirst=True)
ax.plot(data.date, data.time)
ax.set_ylim(["00:00:00", "23:59:59"])

days = mdates.DayLocator()
d_fmt = mdates.DateFormatter('%m-%d')
ax.xaxis.set_major_locator(days)
ax.xaxis.set_major_formatter(d_fmt) 

情節2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM