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.

Foi útil?

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}$')
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top