Recuperar datos XY de la figura matplotlib

Estoy escribiendo una pequeña aplicación en wxPython que tiene un panel de figura de matplotlib (usando el backend wxagg). Me gustaría agregar la capacidad para que el usuario exporte datos X, Y de lo que actualmente se traza en la figura a un archivo de texto. ¿Hay una forma no invasiva de hacer esto? He buscado bastante y parece que no puedo encontrar nada, aunque siento que es increíblemente simple y justo frente a mi cara.

Definitivamente podría obtener los datos y almacenarlos en algún lugar cuando se grafican, y usarlos, pero eso sería bastante invasivo, en los niveles más bajos de mi código. Sería mucho más fácil y universal si pudiera hacer algo tan fácil como:

x = FigurePanel.axes.GetXData() y = FigurePanel.axes.GetYData() 

Esperemos que tenga algún sentido 🙂

¡Muchas gracias! ¡Cualquier ayuda es muy apreciada!

Edición : para aclarar, lo que me gustaría saber cómo hacer es obtener los datos X, Y. Escribir en el archivo de texto después de eso es trivial;)

Esto funciona:

 In [1]: import matplotlib.pyplot as plt In [2]: plt.plot([1,2,3],[4,5,6]) Out[2]: [] In [3]: ax = plt.gca() # get axis handle In [4]: line = ax.lines[0] # get the first line, there might be more In [5]: line.get_xdata() Out[5]: array([1, 2, 3]) In [6]: line.get_ydata() Out[6]: array([4, 5, 6]) In [7]: line.get_xydata() Out[7]: array([[ 1., 4.], [ 2., 5.], [ 3., 6.]]) 

Encontré estos al cavar alrededor en el objeto del eje. Solo pude encontrar alguna información mínima acerca de estas funciones, aparentemente puede darles una bandera booleana para obtener datos originales o procesados, sin estar seguro de lo que significa.

Edit : Joe Kington mostró una forma ligeramente mejor de hacer esto:

 In [1]: import matplotlib.pyplot as plt In [2]: lines = plt.plot([1,2,3],[4,5,6],[7,8],[9,10]) In [3]: lines[0].get_data() Out[3]: (array([1, 2, 3]), array([4, 5, 6])) In [4]: lines[1].get_data() Out[4]: (array([7, 8]), array([ 9, 10]))