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.