Получение значений по оси x в Python matplotlib

#python #matplotlib

#python #matplotlib

Вопрос:

Прежде чем я задам этот вопрос, я уже некоторое время безуспешно искал в Интернете. Многим экспертам это, безусловно, кажется довольно простым. Пожалуйста, потерпите меня.

У меня есть график, созданный matplotlib, и он возвращается как plf.Рисунок. Смотрите Следующее:

 def myplotcode():
    x = np.linspace(0, 2*np.pi)
    y = np.sin(x)
    print("x in external function", x)
    y2 = np.cos(x)
    fig = plf.Figure()
    ax = fig.add_subplot(111)
    ax.plot(x, y, 'bo', x, y2,'gs')
    ax.set_ylabel("Some function")
    return fig, ax
  

То, что я хочу сделать в функции, которая вызывает эту функцию, — это иметь возможность получать все эти значения x из возвращаемых ax или fig. Ну, я понимаю, что одно простое решение — это просто вернуть массив x тоже. Тем не менее, я стараюсь, чтобы количество возвратов было как можно меньше.

Итак, мой вопрос: могу ли я получить этот массив по оси x из fig или ax?

Заранее большое вам спасибо.

Ответ №1:

Вы можете сделать:

 l = ax.axes.lines[0] # If you have more curves, just change the index
x, y = l.get_data()
  

Это даст вам два массива с x y данными и

Комментарии:

1. Спасибо, Дэвид. Это работает. Я искал документ осей и не наткнулся на get_data().

2. Да, иногда полезно использовать IPython для получения большинства свойств или методов в классе с помощью tab . В этом случае, если вы это сделаете l. , и tab вы увидите все свойства кривой 🙂

3. Я серьезно отнесусь к вашему совету. Большое спасибо.