繁体   English   中英

Matplotlib双x轴对数刻度

[英]Matplotlib dual x-axis logarithmic ticks

我已经手动设置了较高的x轴(转换为较低的x轴上的值的1.218x),并且我希望较高的对数刻度也可以将比例尺向上移动1.218x。 有什么建议么?

fig = plt.figure()
ax1 = fig.add_subplot(111)
ax2 = ax1.twiny()

X = np.linspace(0,10000000, 1000000)

ax1.semilogx(X, zero, label='$\mathbb{P} (X=0)$')
ax1.semilogx(X, one, label='$\mathbb{P} (X=1)$')
ax1.semilogx(X, two+more, label='$\mathbb{P} (X\geq2)$')
ax1.set_xlabel(r"Particle Concentration m$^{-3}$")
ax1.set_ylabel(r"Probability of occurrence")
ax1.legend(loc=6)
ax1.grid()

ax2.semilogx(X, one, label='one', alpha = 0)
ax2.set_xlim(ax1.get_xlim())
ax2.set_xticks([12.18323586744639, 121.8323586744639, 1218.323586744639, 12183.23586744639, 121832.3586744639, 1218323.586744639])
ax2.set_xticklabels(['10$^1$','10$^2$','10$^3$','10$^4$','10$^5$','10$^6$'])
ax2.set_xlabel(r"Disdrometer Particle Count (min$^{-1}$)")

plt.show()

泊松PMF用于仪器内的雨滴

编辑 :在下面的评论后重写。

会有一种方法可以移动较小的滴答声,但实际上我认为您的方法是错误的。 仔细观察,您并没有使用ax2绘制任何内容:您只是希望将其用作替代比例。 作为伪造更改限制的一种方式,您正在弄乱刻度线和刻度线标签。 只需更改该限制(这样matplotlib可以自动处理价格变动等)会容易得多。

将上面的代码替换为

ax2.set_xscale("log", nonposx='clip')
ax2.set_xlim(np.array(ax1.get_xlim())/1.218)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM