强制使用科学计数法并限制小数位数在Matplotlib中使用ScalarFormatter

3

我有一个图表,其数据的比例差异很大。为了保持轴线的清晰,我强制使用科学计数法,以防数字超出图表范围。为此,我使用ScalarFormatter并调整ticklabel_format,如下所示:

ax.yaxis.set_major_formatter(ScalarFormatter(useMathText=True, useOffset=False))
ax.ticklabel_format(style='sci', scilimits=(0,0), axis='both')

科学计数法的绘制方式正是我想要的,但有时会显示过多的小数点。y轴刻度标签被裁剪 我在这里找到了一个类似的问题:在matplotlib绘图中的坐标轴上显示小数位数和科学计数法 但我不想像接受的解决方案那样,在每个标签上显示指数因子。此外,FormatStrFormatter将覆盖我的先前ScalarFormatter设置,因此我认为只能使用一个Formatter。
我希望绘图始终如此:刻度标签始终限制为1个小数

我有同样的问题。 - undefined
1个回答

0
也许你可以给出一个具体的例子,说明在你的情况下显示的是什么。 我个人在每个x/y轴上使用以下代码行,它们都能正常工作:
from matplotlib.ticker import ScalarFormatter
import matplotlib.ticker as mticker

formatter = mticker.ScalarFormatter(useMathText=True)
formatter.set_powerlimits((-3,2))
ax.xaxis.set_major_formatter(formatter)
formatter = mticker.ScalarFormatter(useMathText=True)
formatter.set_powerlimits((-3,2))
ax.yaxis.set_major_formatter(formatter)

设置set_powerlimits参数可以确保在显示时,小数点前面只显示2位数字,小数点后面只显示3位数字。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接