在Python中使用TeX在matplotlib标签中插入换行符?
我想知道怎么在matplotlib的图表标签里加个换行,比如在x轴标签(xlabel)或y轴标签(ylabel)里。举个例子,
plt.bar([1, 2], [4, 5])
plt.xlabel("My x label")
plt.ylabel(r"My long label with $\Sigma_{C}$ math \n continues here")
我希望y轴的标签也能居中。有没有办法做到这一点?很重要的一点是,这个标签里需要同时包含TeX格式(用'$'包起来)和换行。
5 个回答
19
plt.bar([1, 2], [4, 5])
plt.xlabel("My x label")
plt.ylabel(r"My long label with $\Sigma_{C}$ math" + "\n" + "continues here")
只需把字符串用换行符连接起来,注意不要用原始字符串的形式。
137
你可以同时享受到两种好处:自动处理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$")
(其实,你也可以用单个空格把字符串分开,而不是用三行来写)。
实际上,Python会自动把紧挨着的字符串连接在一起,你还可以混合使用原始字符串(r"…"
)和带有字符插值的字符串("\n"
)。
53
你的例子正是这样做的,你使用了 \n
。不过,你需要去掉前面的 r 这个标记,这样 Python 才不会把它当作原始字符串来处理。