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

Vin*_*ent 18 python latex matplotlib

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

非常感谢你.

Joe*_*ton 16

你究竟尝试了什么?

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

'\n'完美的工作,但如果您使用原始字符串来避免乳胶序列被解释为转义,它将被python解释为'\''n'不是换行符.

举个例子:

import matplotlib.pyplot as plt

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

plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

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

import matplotlib.pyplot as plt

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

plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Sch*_*sch 12

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

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()
Run Code Online (Sandbox Code Playgroud)

哪个给你:

在此输入图像描述

关键是使用预先组装字符串+=.这样,您可以在同一注释中使用原始字符串命令(由...表示r)和换行符(\n).


Fab*_*bio 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()
Run Code Online (Sandbox Code Playgroud)

我添加了一些"额外内容":

  • r开幕三重引号之前不久,便于LaTeX翻译

  • 双花括号{{}},这样.format()命令和LaTeX就不会相互混淆

  • xycoords='axes fraction'选项,这样以指定与分数值的字符串的位置相对于所述曲线的宽度的和高度
  • backgroundcolor='w'选项,把一个白色大帐篷周围的注释(方便重叠的情况下,你图)

获得的情节如下: 在此输入图像描述


小智 5

快速解决方案

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