等高线图大小和动作
Contour plot size and action
我在生成二维等高线图的代码输出方面遇到了一些麻烦。我在下面显示结果。
如您所见,y 轴严重扭曲,但我的代码似乎没有任何内容会导致这种情况。我的代码如下所示:
#vel_array, Rpl_array, and mass_loss_values are all some lists with the same length, but which I have not given here.
# Set up a regular grid of interpolation points
xi, yi = np.linspace(min(np.array(vel_array)), max(np.array(vel_array)), 100), np.linspace(min(np.array(Rpl_array)), max(np.array(Rpl_array)), 100)
xi, yi = np.meshgrid(xi, yi)
# Interpolate
rbf = Rbf(np.array(vel_array), np.array(Rpl_array), np.array(mass_loss_values), function='cubic')
zi = rbf(xi, yi)
mass_loss_values=np.array(mass_loss_values)
vel_array=np.array(vel_array)
Rpl_array=np.array(Rpl_array)
plt.imshow(zi, vmin=min(mass_loss_values), vmax=max(mass_loss_values), origin='lower',
extent=[min(vel_array), max(vel_array), min(Rpl_array), max(Rpl_array)])
plt.scatter(np.array(vel_array), np.array(Rpl_array), c=np.array(mass_loss_values))
plt.colorbar()
plt.show()
我希望得到帮助。
您的 x 范围为 40000,但 y 范围仅为 1000。
imshow
默认将宽高比设置为 equal
,导致宽高比非常大 (40:1)。尝试将 aspect='auto'
设置为 imshow
命令中的一个选项:
plt.imshow(
zi,
vmin=min(mass_loss_values),
vmax=max(mass_loss_values),
origin='lower',
extent=[min(vel_array), max(vel_array), min(Rpl_array), max(Rpl_array)],
aspect='auto'
)
我在生成二维等高线图的代码输出方面遇到了一些麻烦。我在下面显示结果。
如您所见,y 轴严重扭曲,但我的代码似乎没有任何内容会导致这种情况。我的代码如下所示:
#vel_array, Rpl_array, and mass_loss_values are all some lists with the same length, but which I have not given here.
# Set up a regular grid of interpolation points
xi, yi = np.linspace(min(np.array(vel_array)), max(np.array(vel_array)), 100), np.linspace(min(np.array(Rpl_array)), max(np.array(Rpl_array)), 100)
xi, yi = np.meshgrid(xi, yi)
# Interpolate
rbf = Rbf(np.array(vel_array), np.array(Rpl_array), np.array(mass_loss_values), function='cubic')
zi = rbf(xi, yi)
mass_loss_values=np.array(mass_loss_values)
vel_array=np.array(vel_array)
Rpl_array=np.array(Rpl_array)
plt.imshow(zi, vmin=min(mass_loss_values), vmax=max(mass_loss_values), origin='lower',
extent=[min(vel_array), max(vel_array), min(Rpl_array), max(Rpl_array)])
plt.scatter(np.array(vel_array), np.array(Rpl_array), c=np.array(mass_loss_values))
plt.colorbar()
plt.show()
我希望得到帮助。
您的 x 范围为 40000,但 y 范围仅为 1000。
imshow
默认将宽高比设置为 equal
,导致宽高比非常大 (40:1)。尝试将 aspect='auto'
设置为 imshow
命令中的一个选项:
plt.imshow(
zi,
vmin=min(mass_loss_values),
vmax=max(mass_loss_values),
origin='lower',
extent=[min(vel_array), max(vel_array), min(Rpl_array), max(Rpl_array)],
aspect='auto'
)