Question

Comment puis-je ajouter une nouvelle ligne à l'étiquette d'un terrain (par exemple xlabel ou ylabel) dans matplotlib? Par exemple,

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

Idéalement, je voudrais l'y marquée soit centrée aussi. Y a-t-il un moyen de faire cela? Il est important que l'étiquette ont à la fois TeX (enfermé dans « $ ») et la nouvelle ligne.

Était-ce utile?

La solution

Votre exemple est exactement comment il est fait, vous utilisez \n. Vous devez enlever le préfixe r mais si python ne traite pas comme une chaîne brute

Autres conseils

Vous pouvez avoir le meilleur des deux mondes: automatique "fuite" des commandes LaTeX et retour à la ligne:

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

(au lieu d'utiliser trois lignes, la séparation des chaînes par des espaces simples est une autre option).

En fait, Python concaténer automatiquement les chaînes littérales qui se suivent, et vous pouvez mélanger les chaînes brutes (r"…") et les chaînes avec interpolation de caractères ("\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")

Il suffit de concaténer les cordes avec un saut de ligne qui ne sont pas sous forme de chaîne brute.

Le script python matplotlib suivant crée un texte avec une nouvelle ligne

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

Ce qui suit n'a pas nouvelle ligne. Notez la r avant que le texte

ax.text(10, 70, r'shock size \n $n-n_{fd}$')
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top