首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环内的子图

循环内的子图
EN

Stack Overflow用户
提问于 2019-04-13 13:38:59
回答 1查看 2.2K关注 0票数 0

我想从一个循环中将四个文件图放入一个子图图中。

我已经循环了一些文件(四个数据文件)来从其中提取某些数据(例如纬度、经度和气溶胶光学深度),这些数据是正确打印的,这表明它已经成功地遍历了文件并提取了我需要的内容。当我继续循环,只绘制结果,它画四个单独的数字,因为我还没有做子图。

当我实现一些子代码时,它做了很多事情,但不是我想要的。我想要一个子图图形,有2行和2列显示每个文件,而不是4个子图图只重复每个子图的一个文件。

这是我的浓缩代码:

代码语言:javascript
复制
for lim in mlims:
   fil= ilfil + innm +'kd00' + jad +'nam'
   ln= Dataset(ilfil)
   longit = vn.variables['longitude'][:]
   latitud = vn.variables['latitude'][:] 
   ## etc .....
   aode       = var1+var2
   aod=np.squeeze(aode[:,2,:,:])

   lons, lats = np.meshgrid(lonitud, latatit)
   x, y = map(lons, lats)

   ii=[0,1,2,3]
   fig, axes = plt.subplots(nrows=4, ncols=4, figsize=(2,5))
   for ax,mon_index,lname in zip(axes.flatten(),ii, mnames):


       axis=np.arange(0+0.025,0.5+0.025,0.025)

       cs = ax.contourf(x,y,aod,axis,cmap='seismic',linewidths=1.)
       cbar = map.colorbar(cs)

       plt.title(AOD)

plt.show()

代码输出如下:1是文件的一个绘图,但我不希望同一个文件在一个子图图中重复,而2+是一个绘图

我要它输出:

1 1 1 2-用于第一个文件

1 1 1 3秒文件

1 1 1 4-第三

1 1 1 5

我想得到的是:2,3,4,5

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-13 14:13:27

首先绘制图形和子图;遍历文件和轴;在当前轴上绘制文件中的数据。下面是一个玩具示例,它展示了这个过程。

代码语言:javascript
复制
files = [range(3),range(4),range(5),range(6)]
fig, axarr = plt.subplots(2,2)
for data, ax in zip(files, axarr.flat):
    # if you are looping over filenames
    # process/extract the data from the file here
    ax.plot(data)

Matplotlib文档的子图演示

.subplots()返回一个图形和一个子图Axes数组。

代码语言:javascript
复制
>>> axarr
array([[<matplotlib.axes._subplots.AxesSubplot object at 0x000000000D2BA358>,
        <matplotlib.axes._subplots.AxesSubplot object at 0x000000000F3F29B0>],
       [<matplotlib.axes._subplots.AxesSubplot object at 0x000000000F429080>,
        <matplotlib.axes._subplots.AxesSubplot object at 0x000000000F44F710>]],
      dtype=object)

您可以通过索引到(?)来选择轴,而不是按顺序迭代轴。数组。

代码语言:javascript
复制
>>> axarr[0,1]

<matplotlib.axes._subplots.AxesSubplot object at 0x000000000F3F29B0>
>>>

pyplot有一个当前轴的概念。调用.subplot()方法将使轴当前,然后后续语句将作用于该轴。这是另一种方式来操作个别子图的顺序。

代码语言:javascript
复制
plt.subplot(rows,cols,1)
plt.plot(range(10),'r')
plt.subplot(rows,cols,3)
plt.plot(range(100),'b')
plt.subplot(rows,cols,2)
plt.plot(range(5),'o')
plt.subplot(rows,cols,4)
plt.plot(range(5),'g')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55666113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档