Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python matplotlib中的TeX渲染、大括号和字符串格式语法_Python_String_Matplotlib_Tex - Fatal编程技术网

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
因为单位不是真正的文本符号