Python 不使用xticks设置二维等高线图的轴值
我正在尝试设置使用contour()生成的绘图的x轴和y轴的值,但当前无法读取已删除的轴的特定值Python 不使用xticks设置二维等高线图的轴值,python,matplotlib,Python,Matplotlib,我正在尝试设置使用contour()生成的绘图的x轴和y轴的值,但当前无法读取已删除的轴的特定值 fid_list = [] for fidN in arange(frames): offset = fidN * fid_pts current_fid = cmplx_data[offset:offset+fid_pts] fid_list.append(current_fid) fid_mat = fid_list jres_spec = abs(fftshift(
fid_list = []
for fidN in arange(frames):
offset = fidN * fid_pts
current_fid = cmplx_data[offset:offset+fid_pts]
fid_list.append(current_fid)
fid_mat = fid_list
jres_spec = abs(fftshift(fft2(fid_mat)))
max_val = jres_spec.max()/15
min_val = max_val*0.15
steps = 40
figure()
CS=contour(jres_spec,arange(min_val,max_val,(max_val-min_val)/steps))
show()
这就产生了这样一个情节
ybins = arange(15, -15, -1)
y = ybins * ((1/(15*10^(-3)))/ 30.0)
xbins = arange(828, -196, -1)
x = (2000 * xbins / 1024.0)/128.0
fid_mat = fid_list
jres_spec = abs(fftshift(fft2(fid_mat)))
max_val = jres_spec.max()/15
min_val = max_val*0.15
steps = 40
figure()
CS=contour((x, y, jres_spec),arange(min_val,max_val,(max_val-min_val)/steps))
show()
以前我一直使用xticks和yticks设置轴的值,但现在绘图上的确切位置变得很重要,因此能够读取轴上的值将非常有用,而我不能使用x/yticks
绘制1D光谱时,我使用以下公式读取x轴
bins = arange(828, -196, -1) #change this so that 0 value occurs at value it's meant to
x = (2000 * bins / 1024.0)/128.0
plot(x, fftshift(fft(fid_list[0])))
plt.gca().invert_xaxis()
show()
同样地,我会用它来表示二维等高线图的y轴
ybins = arange(15, -15, -1)
y = ybins * ((1/(15*10^(-3)))/ 30.0)
但是我很难将它集成到我的代码中
我试过用这样的东西
ybins = arange(15, -15, -1)
y = ybins * ((1/(15*10^(-3)))/ 30.0)
xbins = arange(828, -196, -1)
x = (2000 * xbins / 1024.0)/128.0
fid_mat = fid_list
jres_spec = abs(fftshift(fft2(fid_mat)))
max_val = jres_spec.max()/15
min_val = max_val*0.15
steps = 40
figure()
CS=contour((x, y, jres_spec),arange(min_val,max_val,(max_val-min_val)/steps))
show()
返回的
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/home/dominicc/<ipython-input-34-28b34c6c069d> in <module>()
7 bins = arange(828, -196, -1) #change this so that 0 value occurs at value it's meant to
8 x = (2000 * bins / 1024.0)/128.0
----> 9 CS=contour((x_list, jres_spec),arange(min_val,max_val,(max_val-min_val)/steps))
10 show()
/usr/lib/pymodules/python2.7/matplotlib/pyplot.pyc in contour(*args, **kwargs)
2195 ax.hold(hold)
2196 try:
-> 2197 ret = ax.contour(*args, **kwargs)
2198 draw_if_interactive()
2199 finally:
/usr/lib/pymodules/python2.7/matplotlib/axes.pyc in contour(self, *args, **kwargs)
7379 if not self._hold: self.cla()
7380 kwargs['filled'] = False
-> 7381 return mcontour.QuadContourSet(self, *args, **kwargs)
7382 contour.__doc__ = mcontour.QuadContourSet.contour_doc
7383
/usr/lib/pymodules/python2.7/matplotlib/contour.pyc in __init__(self, ax, *args, **kwargs)
1110 are described in QuadContourSet.contour_doc.
1111 """
-> 1112 ContourSet.__init__(self, ax, *args, **kwargs)
1113
1114 def _process_args(self, *args, **kwargs):
/usr/lib/pymodules/python2.7/matplotlib/contour.pyc in __init__(self, ax, *args, **kwargs)
701 if self.origin == 'image': self.origin = mpl.rcParams['image.origin']
702
--> 703 self._process_args(*args, **kwargs)
704 self._process_levels()
705
/usr/lib/pymodules/python2.7/matplotlib/contour.pyc in _process_args(self, *args, **kwargs)
1123 self.zmax = args[0].zmax
1124 else:
-> 1125 x, y, z = self._contour_args(args, kwargs)
1126
1127 x0 = ma.minimum(x)
/usr/lib/pymodules/python2.7/matplotlib/contour.pyc in _contour_args(self, args, kwargs)
1167 if Nargs <= 2:
1168 z = ma.asarray(args[0], dtype=np.float64)
-> 1169 x, y = self._initialize_x_y(z)
1170 args = args[1:]
1171 elif Nargs <=4:
/usr/lib/pymodules/python2.7/matplotlib/contour.pyc in _initialize_x_y(self, z)
1230 '''
1231 if z.ndim != 2:
-> 1232 raise TypeError("Input must be a 2D array.")
1233 else:
1234 Ny, Nx = z.shape
TypeError: Input must be a 2D array.
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
/home/dominicc/in()
7个bins=arange(828,-196,-1)#更改此值,使0值出现在其指定的值处
8 x=(2000*bin/1024.0)/128.0
---->9 CS=等高线(x_列表,jres_规范),arange(最小值,最大值,(最大值-最小值)/步数)
10 show()
/等高线中的usr/lib/pymodules/python2.7/matplotlib/pyplot.pyc(*args,**kwargs)
2195 ax.保持(保持)
2196尝试:
->2197 ret=最大轮廓(*args,**kwargs)
2198 draw_if_interactive()
2199最后:
/轮廓中的usr/lib/pymodules/python2.7/matplotlib/axes.pyc(self,*args,**kwargs)
7379如果不是self._hold:self.cla()
7380 kwargs['filled']=False
->7381返回mcontour.QuadContourSet(自,*args,**kwargs)
7382等高线。等高线文件=mcontour.QuadContourSet.contour文件
7383
/usr/lib/pymodules/python2.7/matplotlib/contour.pyc在__________(self,ax,*args,**kwargs)
1110在QuadContourSet.Contouru文档中描述。
1111 """
->1112轮廓线组。初始(自身、ax、*args、**kwargs)
1113
1114定义过程参数(self、*args、**kwargs):
/usr/lib/pymodules/python2.7/matplotlib/contour.pyc在__________(self,ax,*args,**kwargs)
701如果self.origin=='image':self.origin=mpl.rcParams['image.origin']
702
-->703自处理参数(*参数,**kwargs)
704自我处理水平()
705
/usr/lib/pymodules/python2.7/matplotlib/contour.pyc in_process_args(self,*args,**kwargs)
1123 self.zmax=args[0].zmax
1124其他:
->1125 x,y,z=自身轮廓(args,kwargs)
1126
1127 x0=毫安最小值(x)
/参数(self、args、kwargs)中的usr/lib/pymodules/python2.7/matplotlib/contour.pyc
1167如果Nargs 1169 x,y=self._初始化_x_y(z)
1170 args=args[1:]
1171 elif Nargs您可以通过在调用轮廓时去掉额外的括号来消除错误:
CS=contour(x, y, jres_spec,arange(min_val,max_val,(max_val-min_val)/steps))
如果这不能提供所需的绘图,请尝试xlim
和ylim
直接设置轴限制