有没有可能让图例中的一部分文本以特定的样式呈现,例如粗体或斜体?
有没有可能让图例中的一部分文本以特定的样式呈现,例如粗体或斜体?
在$$
之间编写内容,以便强制matplotlib进行解析。
import matplotlib.pyplot as plt
plt.plot(range(10), range(10), label = "Normal text $\it{Italics}$")
plt.legend()
plt.show()
\bf
而不是\it
。 - ImportanceOfBeingErnest$\mathrm{whatever}$
也很有用。 - travc正如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()
请注意标签字符串前的'r'。由于这个原因,反斜杠将被视为LaTeX命令,而不是Python所解释的方式(因此您可以键入\textbf
而不是\\textbf
)。
texlive
(我只安装了texlive-base
和texlive-latex-extra
包)。 - englebiptexlive
、texlive-latex-extra
和dvipng
才能使这个例子正常工作。 - Ulrich Sterncm-super
。因此,现在需要安装的整个软件包列表将在单个安装命令中列出如下:**sudo apt-get install dvipng texlive-latex-extra texlive-fonts-recommended cm-super
**。 - kmario23\mathregular
,但没有任何变化。 - s.ouchene通过修复那个答案中的问题,为上面的答案添加更多选项,使用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}$",