Pregunta

¿Cómo añadir una nueva línea en la etiqueta de una parcela (por ejemplo xlabel o ylabel) en matplotlib? Por ejemplo,

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

Lo ideal sería la ordenada en el etiquetado que se centra demasiado. ¿Hay alguna forma de hacer esto? Es importante que la etiqueta tiene tanto tex (encerrado en '$') y el salto de línea.

¿Fue útil?

Solución

Su ejemplo es exactamente cómo se hace, se utiliza \n. Es necesario quitarse la r prefijo, aunque por lo pitón no lo trata como una cadena de texto

Otros consejos

Puede tener lo mejor de ambos mundos: automático "escapar" de LaTeX comandos y saltos de línea:

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$")

(en lugar de usar tres líneas, la separación de las cadenas por espacios es otra opción).

De hecho, Python concatena automáticamente literales de cadena que siguen unos a otros, y se puede mezclar cuerdas primas (r"…") y cadenas con carácter de interpolación ("\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")

Sólo concatenar las cadenas con un salto de línea que no está en forma de cadena prima.

La siguiente secuencia de comandos de Python matplotlib crea texto con la nueva línea

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

La siguiente no tiene nueva línea. Note la r antes del texto

ax.text(10, 70, r'shock size \n $n-n_{fd}$')
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top