2016-07-12 19 views
0

I already checked out this question, but it didn't solve my problem.So extrahieren Sie Daten aus Pyplot Abbildung

Hallo! Ich habe eine Pyplot-Figur:

def foo (Daten): fig, ax = plt. Nebenhandlungen (figsize = (20, 10), wobei dpi = 100)

xaxis = (list with x values) 
    yaxis = (numpy array with y values) 
    ax.plot(xaxis, yaxis) 

würde ich foo(), wie die x- und y-Werte zurück. Ich verstehe, dass ich nur

return xvalues, yvalues 

tun könnte, aber ich möchte die Daten aus der Figur extrahieren.

Ich habe mein Bestes versucht, um die Pyplot-Dokumentation zu lesen, aber ich bin immer noch ziemlich neu, also wenn ich etwas Dummes mache, lass es mich wissen!

EDIT: Ich war nicht wirklich beschreibend genug, sorry. Ich versuche, einen Komponententest für ein Modul zu schreiben, bei dem eine der Methoden ein Diagramm generieren und speichern soll. foo() muss nicht unbedingt die x- und y-Daten zurückgeben, ich möchte nur etwas zurückgeben, mit dem ich sicherstellen kann, dass das Diagramm korrekt generiert wurde. Ich bin mir bewusst, dass Matplotlib Testing-Sachen eingebaut hat, aber ich würde eine Menge von meinem Code umstrukturieren müssen, damit es funktioniert.

+3

nicht die Daten, die Sie bereits haben ziemlich albern ist, ja. Wenn du 'xvalues' und' yvalues' hast, dann * benutze * sie. Diese Daten woanders hin zu stellen und dann zu versuchen, sie von woanders her zu bekommen, anstatt wo Sie sie überhaupt haben, ist einfach nur albern. –

+1

Sie haben es sicherlich vermisst, Ihr vollständiges Problem zu erklären, ansonsten macht Ihre Frage keinen Sinn (wie @Wayne sagte: geben Sie einfach Ihre Rohdaten zurück). Was hast du uns nicht gesagt? Ich vermute ein XY-Problem: Sie versuchen, ein anderes Problem zu lösen, und diese Kludis, die Sie versuchen, ist ein Versuch, ein abgeleitetes Problem zu lösen. Wenn Sie sagen, was Sie wirklich wollen, können wir Ihnen helfen, es richtig zu machen. –

+0

Von Ihrem Edit, ich denke, Sie verletzen einen der Prinzipien des Testens, die Ihr System zu testen (SUT) von externen Abhängigkeiten isolieren. Sie müssen _Ihr Code_ testen, und nicht seine Interaktion mit externen Bibliotheken und noch weniger die externen Bibliotheken selbst. – heltonbiker

Antwort

2

Ich denke, der folgende Code tut, was Sie für eine einfache Liniendiagramm wollen:

import numpy as np 
import matplotlib.pyplot as plt 

def foo(xaxis, yaxis): 
    fig, ax = plt. subplots(figsize=(20, 10), dpi=100) 
    curve = ax.plot(xaxis, yaxis) 
    # curve = [Line2D object] 
    return curve[0].get_xdata(), curve[0].get_ydata() 

x,y = foo(range(10), range(0,20,2)) 
print(x,y) 
Verwandte Themen