pyplot graphs python plot graphing matplotlib

graphs - ¿Poniendo newline en la etiqueta matplotlib con TeX en Python?



plot python 3 (4)

El siguiente script matplotlib python crea texto con nueva línea

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

Lo siguiente no tiene una nueva línea. Observe la r antes del texto

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

¿Cómo puedo agregar una nueva línea a la etiqueta de un gráfico (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")

Idealmente, me gustaría que la etiqueta y esté centrada también. ¿Hay alguna forma de hacer esto? Es importante que la etiqueta tenga tanto TeX (incluido en ''$'') como la nueva línea.


Puede tener lo mejor de ambos mundos: "escapando" automáticamente de los comandos y líneas nuevas de 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$")

(en lugar de utilizar tres líneas, separar las cadenas por espacios individuales es otra opción).

De hecho, Python concatena automáticamente literales de cadena que se suceden, y puede mezclar cadenas sin formato ( r"…" ) y cadenas con interpolación de caracteres ( "/n" ).


Tu ejemplo es exactamente cómo se hace, usas /n . Sin embargo, necesitas quitar el prefijo r para que python no lo trate como una cadena sin formato


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

Simplemente concatene las cadenas con una nueva línea que no esté en forma de cadena sin formato.