繁体   English   中英

如何将负功率格式化为 Python 中轴 label 的上标?

[英]How do I format negative power as superscript for the axis label in Python?

我正在编写 function 来格式化 y 轴上的刻度标签。 比例是对数的,所以未格式化的轴看起来像这样:

在此处输入图像描述

我希望标签为 10^-1、10^-2 等,但功率显示为上标。

这是我现在使用的 function:

from matplotlib.ticker import FormatStrFormatter

fmt = lambda x, pos: '$10^{:.0f}$'.format(x, pos)

ax3 = fig.add_subplot()
ax3.yaxis.set_major_formatter(mpl.ticker.FuncFormatter(fmt))

但是,这导致减号是上标,而数字是普通字符(见下文)。 我该如何解决? 我试图在 function 中将 x 设为负数,并在大括号中添加减号,但这似乎也不起作用。

在此处输入图像描述

您需要在指数周围放置双括号,否则只有第一个字符是上标:

from matplotlib.ticker import FuncFormatter

fmt = lambda x, pos: f'$10^{{{x:.0f}}}$'

fig, ax = plt.subplots()
ax.set_ylim((-6, -1))
ax.yaxis.set_major_formatter(FuncFormatter(fmt))

在此处输入图像描述

您也可以直接传递格式化字符串而不是格式化程序,在这种情况下,将在后台创建一个StrMethodFormatter 请参阅set_major_formatter

ax.yaxis.set_major_formatter('$10^{{{x:.0f}}}$')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM