使用函数创建4个具有不同字段和配色方案的matplotlib子图时出现问题



我正在尝试绘制包含不同字段和配色方案的4个子图。为此,我创建了函数color,将参数作为要绘制的字段的配色方案和列表位置。颜色导致另一个函数字段,该函数调用要绘制的字段。

代码如下:

w1 =gas['Velocity']
w2 = gas['MagneticField']
w3=gas['Masses']
w4=gas['Density']

nPixels = [300,300]
minMax = [0, header['BoxSize']]
weights=[w1,w2,w3,w4]

def field(j):
grid, _, _, _ = binned_statistic_2d(x, y, weights[j], 'sum', bins=nPixels, range=[minMax,minMax])

fig = plt.figure(figsize=(15,15))
spec = gridspec.GridSpec(ncols=2, nrows=2, figure=fig)
extent = [0, header['BoxSize'], 0, header['BoxSize']]
def colour(c,j):
field(j)
plt.imshow(np.log10(grid), cmap=c,extent=extent, aspect= 1)
plt.colorbar()

f1_ax1 = fig.add_subplot(spec[0, 0])
f1_ax1.set_title('Magnetic Field')
colour('viridis',0)
f1_ax2 = fig.add_subplot(spec[0, 1])
f1_ax2.set_title('Velocity')
colour('inferno',1)
f1_ax3 = fig.add_subplot(spec[1, 0])
f1_ax3.set_title('Masses')
colour('cividis',2)
f1_ax4 = fig.add_subplot(spec[1, 1])
f1_ax4.set_title('Density')
colour('magma',3)

然而,在运行代码I fet时出现以下错误:

ipython-input-8-3f2f0683bc0b> in <module>
11 f1_ax1 = fig.add_subplot(spec[0, 0])
12 f1_ax1.set_title('Magnetic Field')
---> 13 colour('viridis',0)
14 
15 f1_ax2 = fig.add_subplot(spec[0, 1])
<ipython-input-8-3f2f0683bc0b> in colour(c, j)
6 def colour(c,j):
7     field(j)
----> 8     plt.imshow(np.log10(grid), cmap=c,extent=extent, aspect= 1)
9     plt.colorbar()
10 
NameError: name 'grid' is not defined

我不明白出了什么问题。请求任何可能的帮助。感谢

将网格定义为全局变量解决了这个问题!

field(j)函数内,将global grid写入第一行

最新更新