Как расположить «AnchoredSizeBar» mpl_toolkits за пределами заданных осей

Я сталкиваюсь с серьезными трудностями при размещении 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()

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

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

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
604
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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()

Уважаемый ImportanceOfBeingErnest, не знаете ли вы, как добавить цвет фона в AnchoredSizeBar? Фигура по-прежнему нечеткая.

Philipe Riskalla Leal 30.05.2019 06:48

Уважаемый ImportanceOfBeingErnest, одна вещь из вашего примера, которая вызвала у меня некоторое сомнение, - это метка: «5 единиц деформации». Означает ли это, что заданная длина AnchoredSizeBar представляет собой линейку из 5 единиц относительно единицы проекции осей? Если бы это было так, то из визуального анализа данного рисунка можно заметить, что это не так. На самом деле AnchoredSizeBar имеет размерность 0,1 (единицы оси). Не будете ли вы так любезны пролить свет на эту тему? Искренне,

Philipe Riskalla Leal 07.11.2019 02:32

Да, в моем примере 0,1 единиц данных — это 5 единиц деформации.

ImportanceOfBeingErnest 07.11.2019 02:36

Самое интересное! Не могли бы вы объяснить, какое преобразование произошло, чтобы преобразовать единицы оси 0,1 в единицы деформации 5? Кроме того, что значит варп-юниты? Я благодарю вас за ваше время. Искренне,

Philipe Riskalla Leal 07.11.2019 04:15

Трансформации не происходит. "варп-юниты" только что придумал я. Замените эту строку на «0,1 единицы данных», если это вас сбивает с толку.

ImportanceOfBeingErnest 07.11.2019 13:08

Спасибо, ImportanceOfBeingernest. Теперь мне окончательно ясно. Искренне,

Philipe Riskalla Leal 07.11.2019 14:36

Другие вопросы по теме