Положить новую линию в этикетке Matplotlib с Tex в Python?
-
27-09-2019 - |
Вопрос
Как я могу добавить новую строку на этикетку сюжета (например, 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 (заключена в $ ') и новой строкой.
Решение
Ваш пример точно так, как это сделано, вы используете \n
. Отказ Вы должны снять префикс R, хотя, поэтому Python не относится к нему как сырую строку
Другие советы
Вы можете иметь лучшее из обоих миров: Автоматическое «estaping» латексных команд и Ньюлайн:
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}$')