Matplotlib. Урок 3.4. Настройка графиков. Свойства класса Text

В этом уроке будут рассмотрены свойства класса matplotlib.text.Text, которые используются для тонкой настройки внешнего вида текста на элементах Matplotlib.

Мы не будем рассматривать все свойства класса Text, сделаем обзор только на наиболее часто используемые.

Параметры, отвечающие за отображения текста

  • alpha: float
    • Уровень прозрачности надписи. Параметр задается числом в диапазоне от 0 до 1. 0 – полная прозрачность, 1 – полная непрозрачность.
  • color: color
    • Цвет текста. Значение параметра имеет тоже тип, что и параметр функции plot, отвечающий за цвет графика. Более подробная информация по его использованию представлена в Matplotlib. Урок 2. Работа с инструментом pyplot
  • fontfamily (или family): str
    • Шрифт текста, задается в виде строки из следующего набора: {‘serif’, ‘sans-serif’, ‘cursive’, ‘fantasy’, ‘monospace’}. Можно использовать свой шрифт.
  • fontsize (или size): str, int
    • Размер шрифта, можно выбрать из ряда: {‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’, ‘x-large’, ‘xx-large’}, либо задать его в виде численного значения.
  • fontstyle (или style): str
    • Стиль шрифта, задается из следующего набора {‘normal’, ‘italic’, ‘oblique’}.
  • fontvariant (или variant): str
    • Начертание шрифта, задается из следующего набора {‘normal’, ‘small-caps’}.
  • fontweight (или weight): str
    • Насыщенность шрифта, задается из следующего набора {‘ultralight’, ‘light’, ‘normal’, ‘regular’, ‘book’, ‘medium’, ‘roman’, ‘semibold’, ‘demibold’, ‘demi’, ‘bold’, ‘heavy’, ‘extra bold’, ‘black’} либо численным значением в диапазоне 0-1000.

Рассмотрим пример, демонстрирующий использование перечисленных выше параметров:

plt.title("Title", alpha=0.5, color="r", fontsize=18, fontstyle="italic", fontweight="bold", linespacing=10)

plt.plot(range(0,10), range(0,10))

Для группового задания свойств можно использовать параметр fontproperties или font_properties, которому в качестве значения можно передать объект класса font_manager.FontProperties. Данный объект создается следующим образом:

FontProperties(family=None, style=None, variant=None, weight=None, stretch=None, size=None, fname=None)
  • family 
    • Имя шрифта
  • style 
    • Стиль шрифта
  • variant
    • Начертание
  • stretch 
    • Ширина шрифта
  • weight
    • Насыщенность шрифта
  • size 
    • Размер шрифта

Типы параметров конструктора такие же как у параметров, отвечающих за отображение шрифта.

Не забудьте предварительно импортировать FontProperties прежде, чем его использовать:

from matplotlib.font_manager import FontProperties

plt.title("Title", fontproperties=FontProperties(family="monospace", style="italic", weight="heavy", size=15))

plt.plot(range(0,10), range(0,10))

Параметры, отвечающие за расположение надписи

Для надписи можно задать выравнивание, позицию, вращение и z-порядок:

  • horizontalalignment (или ha): str
    • Горизонтальное выравнивание, задается из следующего набора {‘center’, ‘right’, ‘left’}.
  • verticalalignment (или va): str
    • Вертикальное выравнивание, задается из следующего набора {‘center’, ‘top’, ‘bottom’, ‘baseline’, ‘center_baseline’}.
  • position: (float, float)
    • Позиция надписи, определяется двумя координатами x и y, которые передаются в параметр position в виде кортежа из двух элементов.
  • rotation: float или str
    • Вращение. Ориентацию надписи можно задать в виде текста {‘vertical’, ‘horizontal’} либо численно – значение в градусах.
  • rotation_mode: str
    • Режим вращения. Данный параметр определяет очередность вращения и выравнивания. Если он равен ‘default’, то вначале производится вращение, а потом выравнивание. Если равен ‘anchor’, то наоборот.
  • zorder: float
    • Порядок расположения. Значение параметра определяет очередность вывода элементов. Элемент с минимальным значением zorder выводится первым.

Рассмотрим на примере заголовка использование параметров задания расположения:

plt.title("Title", fontsize=17, position=(0.7, 0.2), rotation="vertical")

plt.plot(range(0,10), range(0,10))

Параметры, отвечающие настройку заднего фона надписи

  • backgroundcolor: color
    • Цвет заднего фона

Если требуется более тонкая настройка с указанием цвета, толщины, типа рамки, цвета основной заливки и т.п., то используйте параметр bbox, его значением – это словарь, ключами которого являются свойства класса patches.FancyBboxPatch:

Свойство Тип значения Описание
boxstyle  str или matplotlib.patches.BoxStyle Стиль рамки. См. таблицу ниже
alpha float или None Прозрачность
color color Цвет
edgecolor или ec color или None или ‘auto’ Цвет границы рамки
facecolor или fc color или None Цвет заливки
fill bool Заливка (использовать или нет)
hatch {‘/’, ‘\’, ‘|’, ‘-‘, ‘+’, ‘x’, ‘o’, ‘O’, ‘.’, ‘*’} Штриховка
linestyle или ls {‘-‘, ‘–‘, ‘-.’, ‘:’, ”, (offset, on-off-seq), …} Стиль линии рамки
linewidth или lw float или None Толщина линии

Параметры boxstyle:

Класс Имя Атрибуты Внешний вид
Circle circle pad=0.3
DArrow darrow pad=0.3
LArrow larrow pad=0.3
RArrow rarrow pad=0.3
Round round pad=0.3, rounding_size=None
Round4 round4 pad=0.3, rounding_size=None
Roundtooth roundtooth pad=0.3, tooth_size=None
Sawtooth sawtooth pad=0.3, tooth_size=None
Square square pad=0.3

Ниже представлен пример оформления заднего фона надписи:

from matplotlib.patches import FancyBboxPatch

bbox_properties=dict(
    boxstyle="rarrow, pad=0.3", 
    ec="g",
    fc="r",
    ls="-",
    lw=3   
)

plt.title("Title", fontsize=17, bbox=bbox_properties, position=(0.5, 0.85))

plt.plot(range(0,10), range(0,10))

P.S.

Вводные уроки по “Линейной алгебре на Python” вы можете найти соответствующей странице нашего сайта. Все уроки по этой теме собраны в книге “Линейная алгебра на Python”.
Книга: Линейная алгебра на Python
Если вам интересна тема анализа данных, то мы рекомендуем ознакомиться с библиотекой Pandas.  Для начала вы можете познакомиться с вводными уроками. Все уроки по библиотеке Pandas собраны в книге Pandas. Работа с данными”.
Книга: Pandas. Работа с данными

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *