对齐主要和次要 x 轴的刻度

问题描述 投票:0回答:1

我正在尝试对齐图中主要和次要 x 轴的刻度。我的absolute_mags和mass数组中的值应该是相等的,但没有正确排列。

目前,我的代码如下:

absolute_mags = np.array([4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14.5])
masses = 10 ** (np.array([0.058, -0.039, -0.136, -0.233, -0.333, -0.463, -0.637, -0.778, -0.867, -0.964, -1.11]))
masses = np.around(masses, 2)

plt.hist(absolute_RP_mags, bins='auto', linewidth=2, hatch='/', edgecolor='k', facecolor='None')
plt.ylabel("number of targets")
plt.xlabel("absolute G_RP magnitude (mag)")
plt.xlim(4, 14.5)

ax1 = plt.gca()
ax2 = ax1.twiny()
ax2.invert_xaxis()
ax1.set_xticks(absolute_mags)
ax1.grid()
ax2.set_xticks(masses)
ax2.set_xlabel("mass ($M/M_\odot$)")

此代码生成以下图:

如何在不使用函数形式的情况下对齐absolute_mags和mass数组中的刻度?

absolute_RP_mags 可以近似为高斯分布,mu=9.86406767115786 和 sigma=1.7088087089866282。

python matplotlib histogram twiny
1个回答
0
投票

我无法复制与您的 img 相同的图表,但如果 IIUC 您需要手动设置主轴和次轴的

xticks
,否则它们会自动设置,从而导致一些差异。只需使用类似下面的
set_xticks
来对齐刻度线:

ax1.set_xticks(np.linspace(0, ax1.get_xbound()[1]+1, 5))
ax2.set_xticks(np.linspace(0, ax2.get_xbound()[1]+1, 5))

输出:

© www.soinside.com 2019 - 2024. All rights reserved.