我想用分数对数刻度绘制一些数据,这样y轴的刻度为10 ^( - 0.1),10 ^( - 0.2),10 ^( - 0.3)等。 问题在于,当我绘制数据时,只有10 ^ 0和10 ^ -1处的刻度,这使得线的斜率太小而无法看到。
是否可以通过这种方式设置小数对数?
由于
答案 0 :(得分:1)
听起来你想要勾选标签,而不是特别是勾选标记。在大多数数字中,小刻度标记已经存在于您想要的位置。
以下可能会有效,但我认为这是一种更简单的方法。请注意,我仅对次要刻度标记应用标签:(两个)主刻度标记已经有标签。不幸的是,两种刻度线的字体不一样;我认为这是LaTeX方程式使用的结果。
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
X = np.logspace(0, 3)
Y = X**-0.2
plt.plot(X,Y)
plt.yscale('log')
yticks = np.linspace(-0.1, -0.9, 9)
ax.set_yticks(10**yticks, minor=True)
ax.set_ylim(0.1, 1)
ax.set_yticklabels(['$10^{{{:.1f}}}$'.format(ytick) for ytick in yticks], minor=True)
plt.show()
导致:
对于不同标签字体的问题,您可以手动更改主要刻度标签:
ax.set_yticks([1, 0.1])
ax.set_yticklabels(['$10^0$', '$10^{-1}$'])
(对于x轴可能相同)。