Python条形图重叠垂直条

时间:2017-11-27 05:06:02

标签: python numpy matplotlib weather

我有两张共享相同x轴的图表。它们都是2880次的时间序列(每小时数据4个月)。我有一个数组,每小时都有降水值(2880)。我想通过第一张图表上的垂直条形图覆盖这些数据,这样条形宽度相当于1小时,并以相应的小时为中心。

我的问题是条的宽度太宽而且彼此重叠。我已经尝试在绘图中将width选项更改为width = 1/24但没有成功(条形图根本没有出现)。这是代码的片段,我根本没有设置宽度。

import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter
import matplotlib.dates as mdates
import datetime
import pandas as pd
import numpy as np

t = np.arange(datetime.datetime(2010,1,01,0), datetime.datetime(2010,5,01,0),datetime.timedelta(hours=1)).astype(datetime.datetime)
stn_temp = np.random.rand(2880)
model_temp = stn_temp-0.2
stn_rh = np.random.randint(0,100,2880)
model_rh = stn_rh -1
fig, (ax1,ax2) = plt.subplots(2,1,sharex=True)
ax1.plot(t,stn_temp,'r',linewidth=0.3)
ax1.plot(t,model_temp,'k',linewidth=0.3)
minor_ticks_temp = np.arange(min(stn_temp),max(stn_temp),1)
ax1.set_yticks(minor_ticks_temp, minor=True)
myFmt = mdates.DateFormatter('%m-%d')
ax1.xaxis.set_major_formatter(myFmt)
ax1.legend(loc=0)
ax1.set_ylabel('2 m Temperature ($^\circ$C)')
ax1 = ax1.twinx()
ax1.bar(t,prec,alpha=0.7,color='g')
ax1.set_ylabel('Accumulated \n Precipitation (mm)')
ax2.plot(t,stn_RH,'b',linewidth=0.3)
ax2.plot(t,rh,'k',linewidth=0.3)
ax2.set_ylim([0,100.5])
ax2.set_ylabel('Relative Humidity (%)')
fig.tight_layout()

条的宽度应该小很多,只有一小时的宽度。此图像是放大版本以显示条形宽度问题。

enter image description here

0 个答案:

没有答案