我想将一个特定值(例如50)减去图像轮廓图的轴x和y,我想修改轴,使它们从-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'绘制的图像数组。是在等高线图下方重叠的图像以及哪些数据与色条相关。
'适合-DATA1'是一个2x2数组,我试图将50减去每个索引[i]和[j],但我真的没有看到什么可能的解决方案,使x和y轴从-50到50.这个想法是( 0,0)图像中的点对应于图像中心。
谢谢!
答案 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.])