使用imshow绘制2D数组,设置轴值

时间:2016-05-31 13:13:25

标签: python multidimensional-array imshow

我必须绘制尺寸为(2779,1334)的2D数组(称为para_beta)。这些尺寸是指进行测量的(时间,高度)。

当我使用代码绘图时,x轴和y轴刻度只是数组尺寸的计数,并且不反映时间或高度。 我有time_hour(len = 2779)和altitude(len = 1334)的列表,它们给出了实际的时间和高度,需要是x和y轴值。我该怎么做呢?

#Importing variables (from netcdf file)
para_beta_raw = nc_file.variables['para_beta'][:] #Dim = time, height
para_beta     = np.swapaxes(para_beta,0,1) # swap axes to put time on x axis
time_hour     = time_bnds.tolist()
altitude      = height_raw.tolist()    

fig = plt.figure('Parallel')
ax1 = fig.add_subplot(111)
im = ax1.imshow(para_beta1, aspect = 'auto', cmap = 'jet', interpolation = 'none', origin = 'lowest')
cb = plt.colorbar(im, label = 'Parallel ATB [$m^{-1}\,sr^{-1}$]')
cb.set_clim([0.0001, 1.0])
ax1.set_xlabel('Time (Decimal hours)')
ax1.set_ylabel('Height (km)')
plt.show()

我尝试使用extent并使用ax1.set_xticklabels(time_hour),但这些都不起作用。我从上面的代码中包含了结果图 - 如果它是正确的,x轴应该延伸到24,y轴应该延伸到20。

enter image description here

2 个答案:

答案 0 :(得分:1)

para_beta是2D(时间x高度),对吗?然后,read-in调用需要反映这两个维度:

para_beta_raw = nc_file.variables['para_beta'][:,:](请注意两个冒号,而不是一个冒号)。

答案 1 :(得分:0)

我刚发现duplicate of my question已经回答了!当我从para_beta数组中获取最小/最大值时,我正在使用extent错误,因为它们应该从time_bnds和altitude数组中获取:

#Importing variables (from netcdf file)
para_beta_raw = nc_file.variables['para_beta'][:,:] #Dim = time, height
para_beta     = np.swapaxes(para_beta,0,1) # swap axes to put time on x axis
time_hour     = time_bnds.tolist()
altitude      = height_raw.tolist()    

fig = plt.figure('Parallel')
ax1 = fig.add_subplot(111)
im = ax1.imshow(para_beta1, extent =(time_bnds.min(), time_bnds.max(), altitude.min(), altitude.max()), aspect = 'auto', cmap = 'jet', interpolation = 'none', origin = 'lowest')
cb = plt.colorbar(im, label = 'Parallel ATB [$m^{-1}\,sr^{-1}$]')
cb.set_clim([0.0001, 1.0])
ax1.set_xlabel('Time (Decimal hours)')
ax1.set_ylabel('Height (km)')
plt.show()