我有一个形状为(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这是中心线。
1条答案
按热度按时间qmb5sa221#
解决方法:
radii =np.asarray(0.2 * ((1125-596)-y_vals))
并定义一个自定义报价格式化程序函数:def y_tick_formatter(value, _): return f'{abs(value):.0f}'
并在图中使用它: