![](/img/trans.png)
[英]Plotting y=times (as data) versus x=dates in matplotlib: How to format the y-axis for all dates?
[英]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
模塊的Locator
和Formatter
方法調整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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.