Как получить ограничивающую рамку шкалы из AnchoredSizeBar из Matplotlib - PullRequest
0 голосов
/ 28 мая 2019

Я столкнулся с серьезными трудностями при получении ограничительной рамки объекта "AnchoredSizeBar" mpl_toolkits.axes_grid1.anchored_artists.

Пока все, что я нашел, это как вставить (создать) AnchoredSizeBar в мою фигуру. Но я не могу восстановить свою позицию. Относительное положение относительно заданных осей также приветствуется.

В конечном счете, я хотел бы создать AnchoredSizeBar, как просит Behnam в 1 . Но для того, чтобы сделать это, мне нужно создать серию AnchoredSizeBars, все смежные друг с другом на рисунке. Для этого мне понадобится функция для извлечения их относительных положений и применения их в создании других AnchoredSizeBars, создавая, наконец, полную шкалу.

Эта тема связана с другими ссылками, представленными ниже:

1) Как вставить масштабную линейку на карту в matplotlib

2) Добавить аргумент fill_bar в AnchoredSizeBar

Вот фрагмент кода желаемого API для извлечения экстента объекта AnchoredSizeBar.

import matplotlib.pyplot as plt


from mpl_toolkits.axes_grid1.anchored_artists import AnchoredSizeBar


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

bar0 = AnchoredSizeBar(ax.transData, 0.3, 'unfilled', loc=3, frameon=False,
                       size_vertical=0.05, fill_bar=False)
ax.add_artist(bar0)


bar0_extent = bar0.get_extent()

fig.show()

Я благодарю вас за ваше время, искренне ваше,

Филип Лил

1 Ответ

0 голосов
/ 28 мая 2019

Чтобы получить экстент, вы можете передать в ax.figure.canvas.renderer, где ax - это оси, к которым был добавлен объект:

bar0_extent = bar0.get_extent(ax.figure.canvas.renderer)

Но я повторяю предложение @ ImportanceOfBeingErnest для вашего конкретного случая использования,Строка документа для AnchoredSizeBar предполагает, что методы:

Строка документа: поле смещения, размещенное в соответствии с местоположением легенды loc.AnchoredOffsetbox имеет одного ребенка.Когда требуется несколько дочерних элементов, используйте другой класс OffsetBox для их включения.По умолчанию поле смещения привязано к его родительским осям.Вы можете явно указать bbox_to_anchor.

Надеюсь, это поможет.

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