for循环中的子批次

2024-06-16 13:10:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把四个文件绘图到一个子图从一个循环。在

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

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

这是我的简明代码:

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+是一个绘图

我希望它输出:

11 12-对于第一个文件

11 13秒文件

11 14-三分之一

11 15

我想得到的只是: 2 3个 4 5个


Tags: 文件数据代码in绘图fornp绘制
1条回答
网友
1楼 · 发布于 2024-06-16 13:10:30

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

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)

subplots demo from Matplotlib docs

.subplots()返回图形和子图^{}的数组。在

^{pr2}$

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

>>> axarr[0,1]

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

pyplot有一个当前轴的概念。调用^{}方法将使一个轴成为当前轴,然后后续语句将作用于该轴。这是另一种方法,可以对无序的单个子批次进行操作。在

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')

相关问题 更多 >