更改刻度标签而不影响绘图

时间:2015-06-02 22:27:23

标签: python numpy multidimensional-array matplotlib axes

我正在使用matplotlib在python中绘制一个二维数组,并且无法格式化刻度线。首先,我的数据目前被组织为具有(高程,纬度)的二维数组。我正在绘制电子密度值作为高度和纬度的函数(基本上是特定时间的纵向切片)。

我想标记x轴以30度为间隔从-90到90度,而y值用另一个高程数组(每个模型运行具有不同的高程值,因此我无法手动指定任意高程)。我有一些数组,其中包含纬度值,另一个数据具有高程值和1-D数组。

这是我的代码:

from netCDF4 import Dataset
import numpy as np
import matplotlib.pyplot as plt

#load the netcdf file into a variable
mar120="C:/Users/WillEvo/Desktop/sec_giptie_cpl_mar_120.nc"

#grab the data into a new variable
fh=Dataset(mar120,mode="r")

#assign model variable contents to python variables
lons=fh.variables['lon'][:]
lats=fh.variables['lat'][:]
var1=fh.variables['UN'][:]

#specifying which time and elevation to map
ionst=var1[0,:,:,21]
ionst=ionst[0:len(ionst)-1]

#close the netCDF file
fh.close()

#Set the figure, size, and resolution
plt.figure(figsize=(8,6), dpi=100, facecolor='white')
plt.subplot(1,1,1)

plt.imshow(ionst, origin='lower', interpolation='spline16')

plt.xticks([-90, -60, -30, 0, 30, 60, 90])  
plt.show()

如果我不包含plt.xticks参数,我会得到以下好图像,但是标记错误:

Good Image but bad tick labeling

如果我包含plt.xticks参数,我会得到以下内容:

Bad figure, data remains static

我该如何解决这个问题?我希望数据跟随轴的变化(但准确)。我还需要为y轴执行此操作,但不需要手动输入值,而是输入值数组。感谢

1 个答案:

答案 0 :(得分:3)

使用extent的{​​{1}}参数设置图像的x和y范围,并使用imshow允许调整图像的宽高比以适合图形。例如,以下代码

aspect='auto'

生成此图:

image