5

有没有一种简单的方法可以让 matplotlib 在对数图中不显示十的幂,而只显示数字?即,而不是[10^1, 10^2, 10^3]显示[10, 100, 1000]?我不想改变刻度线的位置,只想摆脱十的幂。

这是我目前拥有的: 在此处输入图像描述

我可以通过 自己更改标签xticks,但是我会得到 y 刻度标签的不匹配字体或大小。我正在使用 TeX 来编写此文本。我尝试了以下方法:

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

这给出了以下结果: 在此处输入图像描述

在这种特殊情况下,我可以使用相同的 LaTeX 罗马字体,但大小和外观与 y 轴上的不同。另外,如果我在 matplotlib 中使用不同的 LaTeX 字体,这将是有问题的。

有没有更灵活的方法来关闭十符号的力量?

4

1 回答 1

11

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

在此处输入图像描述

于 2012-11-30T05:58:08.047 回答