我有以下在x轴上使用小时数的情节:
我想将x轴上的文字更改为数年而不是数小时。所以我需要几年才能与特定时间相对应。我已经读过这可以使用plt.xticks(x, my_xticks)
和我的x
数组的索引来完成,但不适用于我。如果有人就如何做到这一点给我一些建议,我们将非常感激。非常感谢你。
以下是我的代码示例:
fig_1,ax1 = plt.subplots()
x1 = np.arange(0,129392) #hourly data
x2 = np.linspace(0,129392,5390) #daily data
y_norm = 150.*np.ones([129392,1])
ax1.plot(x1,Data_OBS_h,'k',marker='o',linestyle=' ',label='PM10-1h',linewidth=1.5)
ax1.plot(x2,Data_OBS,'r',linestyle='-',label='PM10-24h',linewidth=1.5)
ax1.plot(x1,y_norm,'b',linestyle='-',label='standard',linewidth=1.5)
答案 0 :(得分:2)
将x轴更改为datetime对象,然后只需调用
plt.plot(x,y)
plt.gcf().autofmt_xdate()
还有手动(但不幸)的方法,如果不起作用我将编辑。
答案 1 :(得分:1)
将x1
和x2
替换为:
import datetime
delta_h = datetime.timedelta(hours=1)
start = datetime.datetime(2001, 1, 1)
x1 = [start + x * delta_h for x in range(129392)]
x2 = [start + x * delta_h for x in range(0, 129392, 24)]
如果您没有实际的开始日期,只是从零时间开始的时差,这非常有用:
import math
days_per_year = 365.2425
hours_per_day = 24
ax1.xaxis.set_major_locator(plt.FixedLocator(
range(0, x1[-1], math.ceil(hours_per_day * days_per_year))))
ax1.xaxis.set_ticklabels(range(math.ceil(x1[-1] / (hours_per_day * days_per_year))))