Python matplotlib中的TeX渲染、大括号和字符串格式语法
在我的Python matplotlib中的TeX渲染、大括号和字符串格式语法,python,string,matplotlib,tex,Python,String,Matplotlib,Tex,在我的matplotlibplot中,我有以下几行代码来渲染TeX注释: import numpy as np import matplotlib.pyplot as plt from matplotlib import rc rc('text', usetex=True) rc('font', family='serif') voltage = 220 notes = r"\noindent $V_2 = {0:.5} V$".format(voltage) plt.annotate(
matplotlib
plot中,我有以下几行代码来渲染TeX注释:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import rc
rc('text', usetex=True)
rc('font', family='serif')
voltage = 220
notes = r"\noindent $V_2 = {0:.5} V$".format(voltage)
plt.annotate(notes, xy=(5,5), xytext=(7,7))
plt.show()
它工作得很好,但我的第一个挑剔是V
是一个度量单位,因此它应该是文本模式,而不是(斜体)数学模式。我尝试以下字符串:
notes = r"\noindent $V_2 = {0:.5} \text{V}$".format(voltage)
这会引发一个错误,因为{
花括号}
是Python字符串格式语法的所有权。在上面的行中,只有{0:.5}
是正确的{V}
被视为陌生人。例如:
s1 = "Hello"
s2 = "World!"
print "Some string {0} {1}".format(s1, s2)
应该给一些字符串Hello World代码>
如何确保TeX的{
花括号}
不会干扰Python的{
花括号}
?您可以将花括号加倍:
>>> print '{{asd}} {0}'.format('foo')
{asd} foo
您必须将牙套翻一倍才能按字面意思进行治疗:
r"\noindent $V_2 = {0:.5} \text{{V}}$".format(voltage)
顺便说一句,你也可以写
\text V
但最好的是
\mathrm V
因为单位不是真正的文本符号