Визуализация TeX, фигурные скобки и синтаксис форматирования строк в matplotlib

У меня есть следующие строки для отображения аннотаций TeX на моем графике matplotlib:

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)

должен дать Some string Hello World!.

Как убедиться, что фигурные скобки { не вмешивается в фигурные скобки Python { }

12 голосов | спросил Kit 20 Mayam11 2011, 11:08:57

2 ответа


0

Вы должны удвоить скобки, чтобы относиться буквально:

r"\noindent $V_2 = {0:.5} \text{{V}}$".format(voltage)

Кстати, вы также можете написать

\text V

но лучше всего

\mathrm V

, поскольку единица на самом деле не является текстовым символом.

ответил Philipp 20 Mayam11 2011, 11:15:07
0

Вы их двойно вьетесь:

>>> print '{{asd}} {0}'.format('foo')
{asd} foo
ответил Blender 20 Mayam11 2011, 11:15:03

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132