Динамическая настройка Y-меток (позиций) на прямоугольном графике matplotlib

Я использую пакет matplotlib.patches.rectangle для построения нескольких прямоугольников. И по оси Y я пытаюсь назвать эти прямоугольники. Количество прямоугольников не фиксировано, поэтому положение метки должно быть динамическим в соответствии с количеством прямоугольников.

Ниже я прикрепил изображения для различных сценариев: 1 прямоугольник, 2 прямоугольника или 3 прямоугольника и т. д. В настоящее время я вручную настроил Y-метки с пробелами между текстами, но есть ли способ автоматизировать, чтобы текст появляется в центре прямоугольника в зависимости от количества прямоугольников.

Я использую ручные пространства для разных условий для 3 разных случаев, но на самом деле случаи не будут ограничены 3, поэтому нужно что-то более динамичное.

Мой код (для 2-прямоугольника): ax.set_ylabel('LAYER-1 LAYER-2', color='g')

Мой код (для 3-прямоугольника): ax.set_ylabel('LAYER-1 LAYER-2 LAYER-3', color='g')

введите здесь описание изображения


person Spandan Rout    schedule 20.08.2020    source источник


Ответы (1)


Могут быть и другие способы сделать это, но я использовал ax.text(x,y,text) для настройки. Значение x может быть отрицательным. Положение текста регулируется вручную.

import matplotlib.pyplot as plt
import matplotlib.patches as patches

fig = plt.figure(figsize=(4,3),dpi=144)
ax = fig.add_subplot(111)

for i in range(4):
    y_pos = 5+(i*20)
    r = patches.Rectangle(xy=(2, y_pos), width=96, height=10, color='r', fill=False)
    ax.text(-22, y_pos+2, 'Layer-{}'.format(i), color='g')
    ax.add_patch(r)

ax.set_xlim(0,100)
ax.set_ylim(0,100)

введите здесь описание изображения

person r-beginners    schedule 20.08.2020