24

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

非常感谢。

4

4 回答 4

19

你到底尝试了什么?

您是否偶然使用了原始字符串(例如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()

在此处输入图像描述

于 2012-04-23T17:59:02.480 回答
16

但是,如果您需要两者,请考虑以下示例:

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

于 2014-07-17T15:02:14.627 回答
10

您可以在定义注释字符串时使用三引号,如在 中 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'注释周围放置一个白色选框(在与您的绘图重叠的情况下方便)

得到的情节是这样的: 在此处输入图像描述

于 2016-03-04T01:50:10.520 回答
6

快速解决方案

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

于 2017-06-12T18:40:02.923 回答