Можно ли выделить часть текста легенды в определенном стиле, скажем, жирным или курсивом?
Стилизация части метки в легенде в matplotlib
Ответы (3)
Как отмечает Сильвадо в своем комментарии, вы можете использовать рендеринг 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» перед строками меток. Из-за этого \ будет рассматриваться как латексная команда, а не интерпретироваться как python (поэтому вы можете ввести \textbf
вместо \\textbf
).
texlive
(у меня был texlive-base
) и texlive-latex-extra
.
- person englebip; 05.12.2011
texlive
, texlive-latex-extra
и dvipng
, чтобы этот пример заработал.
- person Ulrich Stern; 18.04.2016
cm-super
; Таким образом, весь список необходимых пакетов будет следующим в одной команде установки: sudo apt-get install dvipng texlive-latex-extra texlive-fonts-recommended cm-super
- person kmario23; 31.05.2020
Напишите между «$$», чтобы заставить matplotlib интерпретировать его.
import matplotlib.pyplot as plt
plt.plot(range(10), range(10), label = "Normal text $\it{Italics}$")
plt.legend()
plt.show()
\bf
вместо \it
.
- person ImportanceOfBeingErnest; 23.05.2017
$...$
: matplotlib.org/users/mathtext.html
- person ; 27.06.2017
'Normal text' + ' '.join(['$\it{'+i+'}$' for i in my_label.split(' ')])
, где my_label
— это метка, которую вы хотите выделить курсивом.
- person ignoring_gravity; 11.09.2018
\
(обратная косая черта), чтобы вставить пробел в математическом режиме. $это\ есть\ слова$. $\mathrm{whatever}$
тоже полезно знать.
- person travc; 09.04.2019
Добавление дополнительных параметров к ответу выше путем устранения проблем с этим ответом, с интерфейсом 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}$",