Как расположить "AnchoredSizeBar" в mpl_toolkits вне заданных осей - PullRequest
0 голосов
/ 30 мая 2019

Я сталкиваюсь с серьезными трудностями при размещении AnchoredSizeBar вне заданных осей.Из ссылки AnchoredSizeBar атрибут loc принимает только строковые методы, относящиеся к заданным осям, используемым для создания AnchoredSizeBar.

Поэтому, если я хочу установить положение AnchoredSizeBar вне указанных осей, locатрибут не сработает.Фактически, это вызовет сообщение об ошибке.

Кто-нибудь знает способ обойти эту проблему?

Если возможно, я хотел бы создать AnchoredSizeBar, размер бара которого по-прежнему относительнозаданные оси на рисунке, но местоположение AnchoredSizeBar можно разместить в любом месте внутри экземпляра рисунка.

Вот фрагмент кода того, что я хотел бы:

import matplotlib.pyplot as plt


from mpl_toolkits.axes_grid1.anchored_artists import AnchoredSizeBar


fig, ax = plt.subplots(figsize=(3, 3))

x_position = 0.15
y_position = 0.35

Figure_location = (x_position, y_position)    # figure xy locations relative to fig.transFigure.

axes_width_to_size_bar = 0.3

bar0 = AnchoredSizeBar(ax.transData, axes_width_to_size_bar, 'unfilled', loc=Figure_location, frameon=False, size_vertical=0.05, fill_bar=False)

ax.add_artist(bar0)


bar0_extent = bar0.get_extent()

fig.show()

Благодарю вас заваше время.С уважением,

Филипп Рискалла Лил

1 Ответ

1 голос
/ 30 мая 2019

AnchoredSizeBar подклассы matplotlib.offsetbox.AnchoredOffsetbox. Следовательно, дополнительные аргументы передаются на AnchoredOffsetbox. Это обеспечивает аргументы bbox_to_anchor и bbox_transform. Они такие же, как у вас для легенд, поэтому для объяснения смотрите любой пример легенды, например Как убрать легенду из сюжета .

Например, чтобы поместить AnchoredSizeBar в верхний правый угол рисунка,

import matplotlib.pyplot as plt

def draw_sizebar(ax):
    from mpl_toolkits.axes_grid1.anchored_artists import AnchoredSizeBar
    from matplotlib.transforms import Bbox
    asb = AnchoredSizeBar(ax.transData,
                          0.1,
                          "5 warp units",
                          loc='upper right',
                          pad=0.1, borderpad=0.5, sep=5,
                          frameon=False,
                          bbox_to_anchor=Bbox.from_bounds(0, 0, 1, 1),
                          bbox_transform=ax.figure.transFigure)
    ax.add_artist(asb)


fig, ax = plt.subplots()
draw_sizebar(ax)

plt.show()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...