Положить новую линию в этикетке Matplotlib с Tex в Python?

StackOverflow https://stackoverflow.com/questions/2660319

Вопрос

Как я могу добавить новую строку на этикетку сюжета (например, 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}$')
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top