在Python中用TeX在matplotlib标签中放置换行符?

pprl5pva  于 2023-05-01  发布在  Python
关注(0)|答案(5)|浏览(226)

我如何在图的标签上添加新行(例如:例如xlabel或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(用'$'括起来)和换行符。

3okqufwl

3okqufwl1#

你可以拥有两个世界最好的东西: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")。

ztigrdn8

ztigrdn82#

你的例子就是这样做的,你使用\n。不过,您需要去掉r前缀,这样Python就不会将其视为原始字符串

jjhzyzn0

jjhzyzn03#

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

只需用一个不是原始字符串形式的换行符连接字符串即可。

dldeef67

dldeef674#

下面的matplotlib python脚本用新行创建文本

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

以下内容没有新行。注意文本前面的r

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

neekobn85#

如果有人想要TeX(e。例如,部分粗体文本)和一个新的行,并在其中有一个百分比符号(我挣扎的时间比我想要的要长):

import matplotlib.pyplot as plt

plt.plot([10, 20], [10, 20])  # dummy plot
value = 20  # dummy value

bold_text_base = f"Value = %u\ \%%"  # "\ " for protected space, "\%%" for percentage sign that survives formatting and math mode
regular_text = "(2nd line here)"
bold_text = bold_text_base % value
_ = plt.ylabel(r"$\bf{{{x}}}$".format(x=bold_text) + f"\n%s" % regular_text )  # suppress output with "_ = "

退货:

相关问题