所以我有多个数据文件,所有这些文件我都使用数据框来轻松处理信息。所有文件都是 NetCDF 文件。我试图在同一个数字上绘制 4 个箱线图,以便它们都可以很容易地进行比较(我正在研究同一时间选择的平均值如何在不同时间达到峰值)。它们将具有不同的 X 和 Y 值,因为这是在略微不同的时间间隔内获取的观测数据,并且不同的变量数对应于不同的时间相关变量。
我一直在尝试使用子图来使用 matplotlib 实现这一点,但它只是吐出三个空图。我怎样才能做到这一点?
这是代码:
plt.figure(1)
plt.subplot(2, 1, 1)
ds1 = xr.open_dataset(lfile1)
one_day1 = ds1[variable1].sel(time=slice(monthofi+startday+' '+starttime,monthofi+endday+' '+endtime))
df1 = one_day1.to_pandas().to_frame(name=variable1)
df1.index=df1.index-pd.DateOffset(hours=7)
df1.boxplot(column=variable1, by=df1.index.time, whis=[10, 90], sym='')
plt.xlabel('Time')
plt.ylabel('Temperature [degF]')
plt.title('Daily Cycle')
plt.suptitle('')
plt.subplot(2, 1, 2)
ds2 = xr.open_dataset(lfile2)
one_day2 = ds2[variable2].sel(time=slice(monthofi+startday+' '+starttime,monthofi+endday+' '+endtime))
df2 = one_day2.to_pandas().to_frame(name=variable2)
df2.index=df2.index-pd.DateOffset(hours=7)
df2.boxplot(column=variable2, by=df2.index.time, whis=[10, 90], sym='')
plt.xlabel('Time')
plt.ylabel('Average Wind Speed')
plt.title('Daily Cycle')
plt.suptitle('')
plt.subplot(2, 2, 1)
ds3 = xr.open_dataset(lfile3)
one_day3 = ds3[variable3].sel(time=slice(monthofi+startday+' '+starttime,monthofi+endday+' '+endtime))
df3 = one_day3.to_pandas().to_frame(name=variable3)
df3.index=df1.index-pd.DateOffset(hours=7)
df3.boxplot(column=variable3, by=df3.index.time, whis=[10, 90], sym='')
plt.xlabel('Time')
plt.ylabel('Wind Direction')
plt.title('Daily Cycle')
plt.suptitle('')
plt.subplot(2, 2, 2)
ds4 = xr.open_dataset(lfile4)
one_day4 = ds4[variable4].sel(time=slice(monthofi+startday+' '+starttime,monthofi+endday+' '+endtime))
df4 = one_day4.to_pandas().to_frame(name=variable4)
df4.index=df4.index-pd.DateOffset(hours=7)
df4.boxplot(column=variable4, by=df4.index.time, whis=[10, 90], sym='')
plt.xlabel('Time')
plt.ylabel('Solar Radiation [W/m^2]')
plt.title('Daily Cycle')
plt.suptitle('')
plt.show()
究竟是什么没有发生?
好的,现在,我对其进行了编辑,使其如下所示:
plt.figure()
ax1 = plt.subplot(2, 2, 1)
df1.boxplot(column=variable1, by=df1.index.time, whis=[10, 90], sym='')
ax1.set_title('Daily Cycle')
ax2 = plt.subplot(2, 2, 2)
df2.boxplot(column=variable2, by=df2.index.time, whis=[10, 90], sym='')
ax2.set_title('Daily Cycle')
ax3 = plt.subplot(2, 2, 3)
df3.boxplot(column=variable3, by=df3.index.time, whis=[10, 90], sym='')
ax3.set_title('Daily Cycle')
ax4 = plt.subplot(2, 2, 4)
df4.boxplot(column=variable4, by=df4.index.time, whis=[10, 90], sym='')
ax4.set_title('Daily Cycle')
plt.show()
现在,我得到了五个带有五个数字的窗口。占据整个窗口的一个图形具有应该在四个子图中的所有数据,而其他四个图形在我想要的位置各有一个子图,但为空。