在matplotlib中的传奇中标记部分标签

eng*_*bip 34 python matplotlib

是否有可能以特定的样式包含传奇文本的一部分,比方说,粗体还是斜体

jor*_*ris 26

正如silvado在评论中提到的那样,您可以使用LaTeX渲染来更灵活地控制文本渲染.有关更多信息,请参见此处:http://matplotlib.org/users/usetex.html

一个例子:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import rc

# activate latex text rendering
rc('text', usetex=True)

x = np.arange(10)
y = np.random.random(10)
z = np.random.random(10)

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x, y, label = r"This is \textbf{line 1}")
ax.plot(x, z, label = r"This is \textit{line 2}")
ax.legend()
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

注意标签字符串前面的'r'.因此,\将被视为乳胶命令而不是解释为python会这样做(因此您可以键入\textbf而不是\\textbf).

  • 在Ubuntu 12.04上,我需要`texlive`,`texlive-latex-extra`和`dvipng`才能使这个例子正常工作. (2认同)

Hom*_*dam 21

在'$$'之间写入以强制matplotlib来解释它.

import matplotlib.pyplot as plt

plt.plot(range(10), range(10), label = "Normal text $\it{Italics}$")
plt.legend()
plt.show()
Run Code Online (Sandbox Code Playgroud)

  • 这确实比接受的答案容易得多,并且不需要安装乳胶.对于粗体文本,请使用`\ bf`而不是`\ it`. (3认同)
  • @homayoun \it 工作正常,但 \bf 不行。我有一个指向文档的链接在哪里?还有哪些其他\句柄? (2认同)
  • @dmeu为粗体,应为\\ bf(双斜杠) (2认同)
  • 对于句子不起作用:单词之间的空格消失了,因为此功能是为数学而非文本而设计的。您必须将每个单词分别加粗/斜体。 (2认同)
  • 使用 `\ `(反斜杠空格)在数学模式中插入一个空格。$这些\是\词$。`$\mathrm{whatever}$` 也很有用。 (2认同)

kma*_*o23 6

通过修复该答案的问题,为上述答案添加更多选项, OO接口不仅仅是基于状态的 pyplot 接口,可以将空格作为文本的一部分,除了斜体之外还可以使用粗体选项:

ax.legend(handles=legend_handles,
          labels=legend_labels,
          loc='upper right',
          shadow=True,
          fancybox=True,
          facecolor='#C19A6B',
          title="$\\bf{BOLDFACED\ TITLE}$",     # to boldface title with space in between
          prop={'size': 12, 'style': 'italic'}  # properties for legend text
         )
Run Code Online (Sandbox Code Playgroud)

对于中间有空格的斜体title标题,请将上面的内容替换为,

 title="$\\it{ITALICIZED\ TITLE}$",
Run Code Online (Sandbox Code Playgroud)