matplotlib 如何以x轴值显示完整的小时日期值

zvokhttg  于 2023-05-18  发布在  其他
关注(0)|答案(1)|浏览(101)

我试图创建x轴作为每小时数据的图(步长= 1小时)。尽管我将x-data定义为具有小时数据的数组,但我已经获得了00:00的x值(见屏幕截图)。

import pandas as pd
import matplotlib.mdates as mdates

range_hour = pd.date_range(start='2021-01-01', periods=24, freq='H')
xdata_hour = range_hour.hour.values
h_fmt = mdates.DateFormatter('%H:%M')
plot(xdata_hour, ydata)
ax.xaxis.set_major_formatter(h_fmt)

所以我的问题是
1.如何解决这个空问题?
1.我怎样才能获得一小时的步数?x值应表示一天的小时数[00:00,...,23:00]。

isr3a4wc

isr3a4wc1#

如果单个日期小时值尝试使用ConciseDateFormatter,则它尝试
找出最好的日期格式,并使其尽可能紧凑,但仍然是完整的。
你也可以定义多少小时值显示与maxticks参数内AutoDateLocator .参见下面的示例

完整示例

import datetime
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import numpy as np

# Generate 24 hour data
base = datetime.datetime(2021, 1, 1)
dates = [base + datetime.timedelta(hours=(i)) for i in range(24)]

# Generate 24 random values
y = np.random.choice(range(10), 24)

fig, ax = plt.subplots(1, 1, figsize=(14, 6))

# Change tickvalues to show all 24 hour values or less values
locator = mdates.AutoDateLocator(minticks=12, maxticks=24)
formatter = mdates.ConciseDateFormatter(locator)
ax.xaxis.set_major_locator(locator)
ax.xaxis.set_major_formatter(formatter)

ax.plot(dates, y)

# Set x limit values to same day
ax.set_xlim((np.datetime64('2021-01-01 00:00'), np.datetime64('2021-01-01 23:59')))

相关问题