Оси автомасштабирования matplotlib для включения аннотаций

Кто-нибудь знает простой способ расширить область графика, чтобы включить аннотации? У меня есть фигура, где некоторые метки являются длинными и/или многострочными строками, и вместо того, чтобы обрезать их по осям, я хочу расширить оси, чтобы включить аннотации.

Представление Autoscale _этого не делает, и ax.relim не определяет положение аннотаций, так что это не вариант.

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

xmin, xmax = plt.xlim()
ymin, ymax = plt.ylim()
# expand figure to include labels
for l in my_labels:
    # get box surrounding text, in data coordinates
    bbox = l.get_window_extent(renderer=plt.gcf().canvas.get_renderer())
    l_xmin, l_ymin, l_xmax, l_ymax = bbox.extents
    xmin = min(xmin, l_xmin); xmax = max(xmax, l_xmax); ymin = min(ymin, l_ymin); ymax = max(ymax, l_ymax)
plt.xlim(xmin, xmax)
plt.ylim(ymin, ymax)
5
задан Tango 18 July 2012 в 15:37
поделиться