我正在使用plot_date命令在matplotlib中绘制时间序列数据。
在以下代码中,dt_str_etc和BTOTetc引用了datetime格式化数据的数组。我的部分准则如下:
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乘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')
这会返回错误:
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”关于潜行的subplot matplotlib文档的一些信息。如果需要,我可以用这个来编写代码,但我真的想保持原样。有什么想法吗?
非常感谢您提供的任何帮助或想法。
答案 0 :(得分:1)
当绘图布局有多个行和列时,返回的数组是二维的。您需要使用axarr[0, 0]
和axarr[0, 1]
等内容访问各个子图。