Поместить перевод строки в ярлык matplotlib с TeX в Python? - PullRequest
58 голосов
/ 18 апреля 2010

Как я могу добавить новую строку к метке графика (например, xlabel или ylabel) в matplotlib? Например,

plt.bar([1, 2], [4, 5])
plt.xlabel("My x label")
plt.ylabel(r"My long label with $\Sigma_{C}$ math \n continues here") 

В идеале я бы хотел, чтобы буква y тоже была в центре. Есть ли способ сделать это? Важно, чтобы на ярлыке были и TeX (заключенный в '$'), и символ новой строки.

Ответы [ 4 ]

85 голосов
/ 19 апреля 2010

Вы можете иметь лучшее из обоих миров: автоматическое "экранирование" команд LaTeX и переводы строки:

plt.ylabel(r"My long label with unescaped {\LaTeX} $\Sigma_{C}$ math"
           "\n"  # Newline: the backslash is interpreted as usual
           r"continues here with $\pi$")

(вместо трех строк разделение строк на один пробел является еще одним вариантом).

Фактически, Python автоматически объединяет строковые литералы, которые следуют друг за другом, и вы можете смешивать необработанные строки (r"…") и строки с символьной интерполяцией ("\n").

29 голосов
/ 18 апреля 2010

Ваш пример именно так, как это делается, вы используете \n. Вам нужно снять префикс r, хотя python не рассматривает его как необработанную строку

10 голосов
/ 07 ноября 2014
plt.bar([1, 2], [4, 5])
plt.xlabel("My x label")
plt.ylabel(r"My long label with $\Sigma_{C}$ math" + "\n" + "continues here")

Просто объедините строки с новой строкой, которая не находится в необработанном виде.

2 голосов
/ 28 апреля 2014

Следующий скрипт python matplotlib создает текст с новой строкой

ax.text(10, 70, 'shock size \n $n-n_{fd}$')

Следующая строка не имеет новой строки.Обратите внимание на перед текстом

ax.text(10, 70, r'shock size \n $n-n_{fd}$')
...