Python:Matplotlib注释换行符(有和没有乳胶)

时间:2012-04-23 16:55:31

标签: python latex matplotlib

我有一个非常基本的问题:如何使用“annotate”命令在python中使用matplotlib进行换行。我试过“\”和“\ n”,但它不起作用。以及如何为“Latex”注释和普通文本注释执行此操作?

非常感谢。

4 个答案:

答案 0 :(得分:14)

你究竟尝试了什么?

您是偶然使用原始字符串(例如r"whatever")?

'\n'效果很好,但是如果您使用原始字符串来避免将乳胶序列解释为转义符,则python会将其解释为'\''n'而不是换行符。

举个例子:

import matplotlib.pyplot as plt

plt.annotate('Testing\nThis\nOut', xy=(0.5, 0.5))

plt.show()

enter image description here

另一方面,如果我们使用原始字符串:

import matplotlib.pyplot as plt

plt.annotate(r'Testing\nThis\nOut', xy=(0.5, 0.5))

plt.show()

enter image description here

答案 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()

这给了你:

enter image description here

关键是使用+=预先组装字符串。这样,您可以在同一注释中使用原始字符串命令(由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'选项,用于放置白色选框 注释(方便与你的情节重叠)

获得的情节如下: enter image description here

答案 3 :(得分:2)

快速解决方案

plt.annotate("I am \n"+r"$\frac{1}{2}$"+"\n in latex math environment", xy=(0.5, 0.5))