Ввод новой строки в метку matplotlib с TeX в Python?


Как я могу добавить новую строку к метке участка (например, 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   51   2010-04-18 02:32:17

4 ответа:

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

вы можете иметь лучшее из обоих миров: автоматический "побег" команд 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").

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

просто объедините строки с новой строкой, которая не находится в сырой Строковой форме.

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

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

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

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