Colocando a Newline no rótulo Matplotlib com Tex em Python?
-
27-09-2019 - |
Pergunta
Como posso adicionar uma nova linha ao rótulo de um enredo (por exemplo, xlabel ou ylabel) no matplotlib? Por exemplo,
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, eu gostaria que os Y também fossem centrados. Existe uma maneira de fazer isso? É importante que o rótulo tenha o TEX (fechado em '$') e a nova linha.
Solução
Seu exemplo é exatamente como é feito, você usa \n
. Você precisa tirar o prefixo R, embora o python não o trate como uma corda crua
Outras dicas
Você pode ter o melhor dos dois mundos: "escape" automático de comandos de látex e NEWLINES:
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$")
(Em vez de usar três linhas, separar as cordas por espaços únicos é outra opção).
De fato, o python concatena automaticamente literais de cordas que se seguem, e você pode misturar strings cru (r"…"
) e cordas com interpolação de caráter ("\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")
Basta concatenar as strings com uma nova linha que não está em forma de string crua.
O seguinte script python Matplotlib cria texto com nova linha
ax.text(10, 70, 'shock size \n $n-n_{fd}$')
O seguinte não possui nova linha. Observe o r antes do texto
ax.text(10, 70, r'shock size \n $n-n_{fd}$')