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

bvpmtnay  于 2023-11-22  发布在  其他
关注(0)|答案(2)|浏览(187)

我正在尝试对齐图中主x轴和次x轴的刻度。我的absolute_mags和masses数组中的值应该相等,但没有正确对齐。次轴的偏移量在右边,但它应该在左边,以便与主轴上的刻度对齐。
目前,我的代码如下:

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)")

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

字符串
此代码生成以下图:


的数据
如何在主轴和次轴上对齐记号?
absolute_RP_mags可以近似为高斯分布,其中μ =9.86406767115786,σ =1.7088087089866282。

qlfbtfca

qlfbtfca1#

我无法复制与您的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))

字符串
输出量:


的数据

yfjy0ee7

yfjy0ee72#

我找到了一个适合我的答案!
添加ax2.set_xlim(ax1.get_xlim())将刻度线放置在次轴上的正确位置。如果您没有在次轴上绘制数据,则没有任何数据要对齐,因此您需要从主轴绘制轴限制。

相关问题