Matplotlib:在日志图中禁用10的幂

时间:2012-11-30 01:25:07

标签: python matplotlib

是否有一种简单的方法可以让matplotlib在日志图中不显示10的幂,而只是显示数字?即,而不是[10^1, 10^2, 10^3]显示[10, 100, 1000]?我不想改变标记位置,只想摆脱十的权力。

这就是我目前所拥有的: enter image description here

我可以通过xticks更改标签本身,但是我会为y刻度标签找到不匹配的字体或大小。我在本文中使用TeX。我尝试了以下内容:

xx, locs = xticks()
ll = [r'\rm{%s}' % str(a) for a in xx]
xticks(xx, ll)

这给出了以下结果: enter image description here

在这种特殊情况下,我可以使用相同的LaTeX罗马字体,但尺寸和外观与y轴的尺寸和外观不同。另外,如果我在matplotlib中使用了不同的LaTeX字体,这将会出现问题。

是否有更灵活的方式来关闭十种符号的力量?

1 个答案:

答案 0 :(得分:6)

使用ScalarFormatter

from matplotlib import rc
rc('text', usetex=True)
rc('font', size=20)

import matplotlib.pyplot as plt
from matplotlib.ticker import ScalarFormatter

fig = plt.figure(figsize=(10, 6))
ax = fig.add_subplot(111)
ax.semilogx(range(100))
ax.xaxis.set_major_formatter(ScalarFormatter())
plt.show()

enter image description here