在python绘图中,针对对数坐标轴设置,有以下三种方法:
# 方法1
axs.set_xscale('log')
# 方法2
axs.semilogx()
# 方法3
logfmt = matplotlib.ticker.LogFormatterExponent(base=10.0, labelOnlyBase=True)
axs.xaxis.set_major_formatter(logfmt)
其中第三种可自行设置其他格式(如科学计数法等)格式的坐标轴刻度。纵坐标轴同理。这个时候的结果长这个样子。
直接对数坐标系下的坐标轴标签显示结果
但更多的情况下,我们的横坐标的值本来就是取完对数的,想要将标签设置为以10为底的,方法如下:
def mjrFormatter(x, pos):
return "$10^{{{0}}}$".format(x)
axs.xaxis.set_major_formatter(mpl.ticker.FuncFormatter(mjrFormatter))
得到的结果长这样子
自定义以10为底的坐标轴标签
可以看出后者的指数不是整数,二者还是有差别的。
参考资料
https://stackoverflow.com/questions/15123928/matplotlib-change-yaxis-tick-labels