Шаг 32.
Язык Python. Визуализация данных.
Библиотека Matplotlib. Текстовые элементы графика. Аннотация (окончание)

    На этом шаге мы рассмотрим некоторые параметры, влияющие на внешний вид аннотации.

    Рассмотрим настройку внешнего вида стрелки аннотации. За конфигурирование отображения стрелки отвечает параметр arrowprops, который принимает в качестве значения словарь, ключами которого являются параметры конструктора класса FancyArrowPatch, из них выделим два:


    Стиль стрелки
Параметр: arrowstyle
Тип: str, ArrowStyle, optional

    Доступные стили стрелок представлены в таблице 1 и на рисунке 1.

Таблица 1. Стили стрелок аннотации
Класс Имя Атрибуты
Curve - None
CurveB -> head_length=0.4, head_width=0.2
BracketB -[ widthB=1.0, lengthB=0.2, angleB=None
CurveFilledB -|> head_length=0.4, head_width=0.2
CurveA <- head_length=0.4, head_width=0.2
CurveAB <-> head_length=0.4, head_width=0.2
CurveFilledA <|- head_length=0.4, head_width=0.2
CurveFilledAB <|-|> head_length=0.4, head_width=0.2
BracketA ]- widthA=1.0, lengthA=0.2, angleA=None
BracketAB ]-[ wngthA=0.2, angleA=None, widthB=1.0, lengthB=0.2, angleB=None
Fancy fancy head_length=0.4, head_width=0.4, tail_width=0.4
Simple simple head_length=0.5, head_width=0.5, tail_width=0.2
Wedge wedge tail_width=0.3, shrink_factor=0.5

    Программный код для построения изображения, представленного на рисунке 1:

import matplotlib.pyplot as plt

plt.figure(figsize=(7, 5))
arrows = ['-', '->', '-[', '|-|', '-|>', '<-', '<->', '<|-', '<|-|>',
          'fancy', 'simple', 'wedge']
bbox_properties = dict(
    boxstyle='round, pad=0.2',
    ec='k',
    fc='w',
    ls='-',
    lw=1
)
ofs_x = 0
ofs_y = 0
for i, ar in enumerate(arrows):
    if i == 6:
        ofs_x = 0.5
    plt.annotate(ar, xy=(0.4 + ofs_x, 0.92 - ofs_y), xycoords='data',
                 xytext=(0.05 + ofs_x, 0.9 - ofs_y), textcoords='data',
                 fontsize=17, bbox=bbox_properties,
                 arrowprops=dict(arrowstyle=ar)
                 )
    if ofs_y == 0.75:
        ofs_y = 0
    else:
        ofs_y += 0.15
plt.show()
Архив с файлом можно взять здесь.

    Результат работы приложения изображен на рисунке 1.


Рис.1. Стили стрелок аннотации


    Стиль соединительной линии
Параметр: connectionstyle
Тип: str, ConnectionStyle, None, optional

    Данный параметр задаёт стиль линии, которая соединяет точки xy и xycoords. В качестве значения может принимать объект класса ConnectionStyle или строку, в которой указывается стиль линии соединения с параметрами, перечисленными через запятую.

Таблица 2. Стили соединительной линии аннотации
Класс Имя Атрибуты
Angle angle angleA=90, angleB=0, rad=0.0
Angle3 angle3 angleA=90, angleB=0
Arc arc angleA=0, angleB=0, armA=None, armB=None, rad=0.0
arc3 arc3 rad=0.0
Bar bar armA=0.0, armB=0.0, fraction=0.3, angle=None

    Ниже представлен пример, демонстрирующий возможности работы с параметром connectionstyle:

import matplotlib.pyplot as plt

fig, axs = plt.subplots(2, 3, figsize=(12, 7))
conn_style = ['angle, angleA=90, angleB=0, rad=0.0',
              'angle3, angleA=90, angleB=0',
              'arc, angleA=0, angleB=0, armA=0, armB=40, rad=0.0',
              'arc3, rad=-1.0',
              'bar, armA=0.0, armB=0.0, fraction=0.1, angle=70',
              'bar, fraction=-0.5, angle=180', ]
for i in range(2):
    for j in range(3):
        axs[i, j].text(0.1, 0.5, '\n'.join(conn_style[i * 3 + j].split(',')))
        axs[i, j].annotate('text', xy=(0.2, 0.2), xycoords='data',
                           xytext=(0.7, 0.8), textcoords='data',
                           arrowprops=dict(arrowstyle='->', 
                           connectionstyle=conn_style[i * 3 + j]))

plt.show()
Архив с файлом можно взять здесь.

    Результат работы приложения изображен на рисунке 2.


Рис.2. Стили соединительной линии аннотации

    На следующем шаге мы начнем рассматривать свойства класса Text.




Предыдущий шаг Содержание Следующий шаг