将值减去轮廓图轴python

时间:2016-04-06 02:33:28

标签: python matplotlib

我想将一个特定值(例如50)减去图像轮廓图的轴x和y,我想修改轴,使它们从-50到50开始。contour map

图像与色彩图重叠,但x和y轴对应于等值线图。

我用来生成等高线图的代码基本上是:

plt.clf()
plt.figure()
ax=plt.gca()
cba=plt.colorbar()
line_colours = ('gray', 'white', 'black')
contour=plt.contour(fits_data1,origin='lower',colors=line_colours )
imgplot=plt.imshow(np.log10(array_auxiliar),origin='lower',clim=(0.0, 0.7))
ellipse = Ellipse(xy=(15.0, 20.0), width=b_maj,height=b_min,angle=bpa,edgecolor='b', fc='b', lw=2,fill=True)
ax.add_patch(ellipse)
cba.ax.set_ylabel('$log_{10}(F(Ha))$',labelpad = 15,fontsize = 15)
plt.show() 

这里' fits_data1'是我的第一个用等高线图和' array_auxiliar'绘制的图像数组。是在等高线图下方重叠的图像以及哪些数据与色条相关。

'适合-DATA1'是一个2x2数组,我试图将50减去每个索引[i]和[j],但我真的没有看到什么可能的解决方案,使x和y轴从-50到50.这个想法是( 0,0)图像中的点对应于图像中心。

谢谢!

1 个答案:

答案 0 :(得分:0)

根据documentation,如果您不提供曲面的坐标,将自动为您选择它们​​。您有plt.contour(Z)并且想要plt.contour(X, Y, Z)。要实现此目的,请使用numpy.meshgrid(),其中包含plt.contour()的示例。

x = np.linspace(-50, 50, fits_data1.shape[0])
y = np.linspace(-50, 50, fits_data1.shape[1])
X, Y = np.meshgrid(x, y)
plt.contour(X, Y, fits_data1, origin='lower', colors=line_colours)

次要花絮,numpy.linspace()生成[start,stop](包括)范围内的均匀间隔数据。这可以产生与使用np.arange()不同的数字,因此取决于您想要的那个。

>>> np.linspace(-5, 5, 10)
array([-5.        , -3.88888889, -2.77777778, -1.66666667, -0.55555556,
        0.55555556,  1.66666667,  2.77777778,  3.88888889,  5.        ])
>>> np.linspace(-5, 5, 10, endpoint=False)
array([-5., -4., -3., -2., -1.,  0.,  1.,  2.,  3.,  4.])
>>> np.arange(-5, 5, 1.)
array([-5., -4., -3., -2., -1.,  0.,  1.,  2.,  3.,  4.])