#python #matplotlib
#python #matplotlib
Вопрос:
Я пытаюсь определить, каковы пределы точек данных для осей или фигур matplotlib, но я не могу найти никакого способа. Я приведу пример, но исходное изображение намного сложнее:
Используя Axes.get_xbound() или Axes.get_xlim(), я получаю (-265.6, 6000.0), но я бы хотел получить (0,5570).
Я спрашиваю об этом, потому что в этой части кода у меня есть доступ только к объекту Figure или Axes. Что-то вроде этого:
def plot_detail():
fig, ax = plt.subplots(1)
# Code
# ...
return fig,ax
def main():
fig,ax = plot_detail()
print(ax.get_xbound())
print(ax.get_xlim())
# Here I would need the data limits
# Any Idea how?
Комментарии:
1. Вероятно, вы можете лучше определить это непосредственно из данных
Ответ №1:
Во-первых, просто в качестве примечания, из того факта, что вам нужны данные в точке кода, где у вас есть только график (фигура и оси), мне кажется, что при разработке / написании вашего кода было принято по крайней мере одно не очень удачное дизайнерское решение. Если бы я мог видеть весь код целиком, я, вероятно, мог бы порекомендовать лучший подход. Тем не менее, понятно, что иногда мы не предвидим всех потребностей нашего кода, а затем иногда (в зависимости от размера программы) может не стоить усилий для редизайна / перезаписи части кода.
Итак, чтобы получить данные (чтобы знать x-пределы самих данных, а не только графика)… Вы можете сделать это, получив lines.Line2D
объекты из объекта Axes.
Даже если кажется, что вы строите гистограмму, там все равно должен быть объект Line2D. Этот объект содержит данные xy.
xdata = ax.get_lines()[0].get_xdata()
print('xdata limits:',xdata[0],xdata[-1])
HTH.
Комментарии:
1. Скорее всего, это плохой дизайн, но воспроизвести его здесь практически невозможно. У меня есть своего рода график поверх другого сложного графика (в котором используются разные модули). Итак, сначала я вызываю функцию, которая возвращает этот фоновый график (fig, ax), а затем я отображаю остальную информацию поверх нее.