我想对某个图像轮廓图的x和y轴减去某个值,例如50,我想修改该轴,以便它们从-50到50开始。
图像与颜色图重叠,但是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”是重叠在轮廓图下方的图像,并且哪些数据与颜色条相关。
'fits-data1'是一个2x2数组,我尝试将50减去每个索引[i]和[j],但我真的不知道将x和y轴从-50变为50的可行解决方案。想法是图像中的(0,0)点对应于图像中心。
谢谢!
根据文档,如果您不提供曲面的坐标,则会自动为您选择坐标。你有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()
在[开始,停止](含)范围内生成均匀间隔的数据。与使用相比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.])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句