Matplotlib双x轴对数刻度

时间:2018-03-06 16:43:05

标签: python matplotlib axis-labels

我手动设置了上方的x轴(转换是下方x轴上的值的1.218倍),我喜欢上面的 次要 对数滴答也使得规模上升1.218倍。有什么建议吗?

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

Poisson pmf for raindrops inside an instrument

1 个答案:

答案 0 :(得分:1)

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

有一种方法可以移动次要蜱但实际上我认为你的方法是错误的。近距离观察你并没有使用ax2来绘制任何东西:你只是希望它作为另一种尺度。作为一种假装改变极限的方法,你正在弄乱蜱和蜱标签。更改这些限制会更容易(这样matplotlib可以自动处理滴答等)。

替换上面的代码
ax2.set_xscale("log", nonposx='clip')
ax2.set_xlim(np.array(ax1.get_xlim())/1.218)