我有一个非常基本的问题:如何使用“annotate”命令在python中使用matplotlib进行换行。我试过“\”和“\ n”,但它不起作用。以及如何为“Latex”注释和普通文本注释执行此操作?
非常感谢。
答案 0 :(得分:14)
你究竟尝试了什么?
您是偶然使用原始字符串(例如r"whatever"
)?
'\n'
效果很好,但是如果您使用原始字符串来避免将乳胶序列解释为转义符,则python会将其解释为'\'
和'n'
而不是换行符。
举个例子:
import matplotlib.pyplot as plt
plt.annotate('Testing\nThis\nOut', xy=(0.5, 0.5))
plt.show()
另一方面,如果我们使用原始字符串:
import matplotlib.pyplot as plt
plt.annotate(r'Testing\nThis\nOut', xy=(0.5, 0.5))
plt.show()
答案 1 :(得分:10)
但是,如果您需要两者,请考虑以下示例:
import matplotlib.pyplot as plt
a = 1.23
b = 4.56
annotation_string = r"Need 1$^\mathsf{st}$ value here = %.2f" % (a)
annotation_string += "\n"
annotation_string += r"Need 2$^\mathsf{nd}$ value here = %.2f" % (b)
plt.annotate(annotation_string, xy=(0.5, 0.5))
plt.show()
这给了你:
关键是使用+=
预先组装字符串。这样,您可以在同一注释中使用原始字符串命令(由r
表示)和换行符(\n
)。
答案 2 :(得分:7)
您可以在定义注释字符串时使用三引号,如string="""some text"""
中所示,这样您在字符串中键入的实际换行符将被解释为输出中的换行符。这是一个例子,其中包括乳胶和从代码的其他部分打印一些数值参数
import matplotlib.pyplot as plt
I = 100
T = 20
annotation_string = r"""The function plotted is:
$f(x) \ = \ \frac{{I}}{{2}} \cos\left(2 \pi \ \frac{{x}}{{T}}\right)$
where:
$I = ${0}
$T = ${1}""".format(I, T)
plt.annotate(annotation_string, xy=(0.05, 0.60), xycoords='axes fraction',
backgroundcolor='w', fontsize=14)
plt.show()
我添加了一些"额外内容":
开幕式三重引号前不久的r
,以方便LaTeX口译员
双花括号{{}}
,以便.format()
命令和LaTeX互不干扰
xycoords='axes fraction'
选项,以便指定位置
带有小数值的字符串,宽度和
情节的高度backgroundcolor='w'
选项,用于放置白色选框
注释(方便与你的情节重叠)答案 3 :(得分:2)
快速解决方案
plt.annotate("I am \n"+r"$\frac{1}{2}$"+"\n in latex math environment", xy=(0.5, 0.5))