2

使用 Python 和 Pyplot,我的绘图标签之一如下,它给出了我想要的。

plt.ylabel('$\mathrm{\dot{\nu}}$ ($\mathrm{10^{-16} s^{-2}}$)', fontsize=16)

然后,我希望标签不是 10^-16,而是 10^-“power”,其中 power 是我的代码中的一个变量。

我将代码调整为:

plt.ylabel('$\mathrm{\dot{\nu}}$ ($\mathrm{10^{-{0}} s^{-2}}$)'.format(power), fontsize=16

但我收到以下错误:

KeyError: '\\dot{\\nu}'

由于所有大括号,该错误似乎不知道何时要替换“电源”,但我不确定如何解决。

4

3 回答 3

2

您需要转义所有{字符 - <code>.format() 将它们视为特殊字符:

>>> '{0}'.format('foo')
'foo'
>>>
'{{{0}}}'.format('foo')  # => '{foo}'
'{foo}'

或者

>>> power = 3
>>> '$\mathrm{{\dot{{\nu}}}}$ ($\mathrm{{10^{{-{0}}} s^{{-2}}}}$)'.format(power)
'$\\mathrm{\\dot{\nu}}$ ($\\mathrm{10^{-3} s^{-2}}$)'
于 2013-10-14T22:44:13.153 回答
2

您可以使用旧格式语法绕过所有这些:

>>> "%d, %d, %d" % (2, 2 ,4)
'2, 2, 4'
>>> 

在你的情况下:

>>> '$\mathrm{{\dot{{\nu}}}}$ ($\mathrm{{10^{{-%d}} s^{{-2}}}}$)' % 2
'$\\mathrm{{\\dot{{\nu}}}}$ ($\\mathrm{{10^{{-2}} s^{{-2}}}}$)'
>>> 

使用字符串:

>>> "%s world" % ('hello')
'hello world'
>>> 
于 2013-10-14T22:49:04.910 回答
1

您需要像这样在格式字符串中转义{and :}

'$\mathrm{{\dot{{\nu}}}}$ ($\mathrm{{10^{{-{0}}} s^{{-2}}}}$)'
于 2013-10-14T22:44:23.467 回答