python 2D数据的Matplotlib图

2cmtqfgy  于 2023-03-21  发布在  Python
关注(0)|答案(1)|浏览(99)

我有一个形状为(1125,2058)的数据,我想绘制一个2D图。x轴对应于波长,我有一个名为'lam_gal'的numpy数组,y轴对应于半径r。我的中心(r=0)在y=596,由此我计算我的半径为:

y_vals = np.arange(1125)
radii =np.asarray(0.2 * (596-y_vals))

我的plot代码:

fig, ax = plt.subplots(1,1, figsize=fig_dim)

# Create a 2D plot of the galaxy spectrum using imshow
im=ax.imshow(data_gal, cmap='binary', extent=(lam_gal[0], lam_gal[-1], radii[0], radii[-1]))

# Set axis labels
ax.set_xlabel('Wavelength')
ax.set_xlim(4900, 5450)
ax.set_ylabel('r')

# Show the plot
plt.show()

其结果是:

这里的y轴有两个问题,第一,我如何将y轴标签设置为全部为正,因为负半径是非物理的,第二,0-tick不与中心线(黑线)对齐,但我很确定y=596这是中心线。

qmb5sa22

qmb5sa221#

解决方法:radii =np.asarray(0.2 * ((1125-596)-y_vals))并定义一个自定义报价格式化程序函数:def y_tick_formatter(value, _): return f'{abs(value):.0f}'并在图中使用它:

ax.yaxis.set_major_formatter(plt.FuncFormatter(y_tick_formatter))

相关问题