plot_date 和 matplotlib 中的多列子图。如何使用 plot_date 将 1 列更改为 2 列子图?

plot_date and multiple column subplots within matplotlib. How to change 1 column to 2 column subplot using plot_date?

我正在使用 plot_date 命令在 matplotlib 中绘制时间序列数据。

在下面的代码中,dt_str_etc 和 BTOTetc 指的是日期时间格式数据的数组。我的部分代码如下:

import matplotlib.pylab as plt
import matplotlib.dates as dates
from datetime import datetime

f,axarr=plt.subplots(nrows=9,sharex=False)

axarr[0].plot_date(dt_str_16h25,BTOT16h25,fmt='-k')
axarr[1].plot_date(dt_str_16h26,BTOT16h26,fmt='-k')
axarr[2].plot_date(dt_str_16h27,BTOT16h27,fmt='-k')
axarr[3].plot_date(dt_str_16h28,BTOT16h28,fmt='-k')
axarr[4].plot_date(dt_str_16h29,BTOT16h29,fmt='-k')
axarr[5].plot_date(dt_str_16h30,BTOT16h30,fmt='-k')
axarr[6].plot_date(dt_str_16h31,BTOT16h31,fmt='-k')
axarr[7].plot_date(dt_str_16h32,BTOT16h32,fmt='-k')
axarr[8].plot_date(dt_str_16h33,BTOT16h33,fmt='-k')

现在,上面的代码 有效 。 plot_date 功能如您所愿,我得到了一个包含 9 个子图的漂亮图以及一个漂亮的时间序列...

我想要做的是将上面的 9 个图绘制在两列而不是一列上[基本上是 2 x 5(有一个未占用的空间)]]。多列子图。我尝试使用以下代码这样做:

import matplotlib.pylab as plt
import matplotlib.dates as dates
from datetime import datetime

f,axarr=plt.subplots(nrows=5,ncols=2,sharex=False)

axarr[0].plot_date(dt_str_16h25,BTOT16h25,fmt='-k')
axarr[1].plot_date(dt_str_16h26,BTOT16h26,fmt='-k')
axarr[2].plot_date(dt_str_16h27,BTOT16h27,fmt='-k')
axarr[3].plot_date(dt_str_16h28,BTOT16h28,fmt='-k')
axarr[4].plot_date(dt_str_16h29,BTOT16h29,fmt='-k')
axarr[5].plot_date(dt_str_16h30,BTOT16h30,fmt='-k')
axarr[6].plot_date(dt_str_16h31,BTOT16h31,fmt='-k')
axarr[7].plot_date(dt_str_16h32,BTOT16h32,fmt='-k')
axarr[8].plot_date(dt_str_16h33,BTOT16h33,fmt='-k')

这个 returns 我的错误:

Traceback (most recent call last):
      File "C:/Users/Charles/Google Drive/Year 4 Real/MPhys Project/Mag     Data/2007/Mag_data_2007_plot_T 25 26 27 28 29 30 31 32 33 adjusted.py", line 118, in <module>
    axarr[1].plot_date(dt_str_16h25,BTOT16h25,fmt='-k')
AttributeError: 'numpy.ndarray' object has no attribute 'plot_date'

我所做的就是写"ncols=2"。这是唯一的区别。为什么我不能再使用 plot_date 命令以这种方式绘图?

我已经阅读了一些关于可能使用 "add_subplot" 的子图 matplotlib 文档的信息。如果需要,我可以使用它重新编写代码,但我真的很想保持原样。有什么想法吗?

非常感谢您提供的任何帮助或想法。

当绘图布局有多行多列时,返回的数组是二维的。您需要使用 axarr[0, 0]axarr[0, 1].

之类的内容访问各个子图