在Python中使用TeX在matplotlib标签中插入换行符?

94 投票
5 回答
150929 浏览
提问于 2025-04-15 21:44

我想知道怎么在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 才不会把它当作原始字符串来处理。

撰写回答