На этом шаге мы рассмотрим некоторые параметры, влияющие на внешний вид аннотации.
Рассмотрим настройку внешнего вида стрелки аннотации. За конфигурирование отображения стрелки отвечает параметр arrowprops, который принимает в качестве значения словарь, ключами которого являются параметры конструктора класса FancyArrowPatch, из них выделим два:
Доступные стили стрелок представлены в таблице 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. Стили стрелок аннотации
Данный параметр задаёт стиль линии, которая соединяет точки xy и xycoords. В качестве значения может принимать объект класса ConnectionStyle или строку, в которой указывается стиль линии соединения с параметрами, перечисленными через запятую.
Класс | Имя | Атрибуты |
---|---|---|
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.