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

时间:2011-12-04 15:33:34

标签: python matplotlib

是否可以以特定样式包含部分的图例文字,例如粗体斜体

3 个答案:

答案 0 :(得分:25)

正如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()

enter image description here

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

答案 1 :(得分:15)

在' $$'之间写下来强制matplotlib解释它。

import matplotlib.pyplot as plt

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

答案 2 :(得分:0)

通过解决该问题的方法,为above answer添加了更多选项,使用 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
         )

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

 title="$\\it{ITALICIZED\ TITLE}$",