2017-12-18 1 views
1

Ich versuche, eine Liste von Tupeln mit matplotlib.pyplot Paket & Python 3 in Spyder IDE zu zeichnen. Im Folgenden finden Sie die entsprechenden Ausschnitt aus meinem Code:Python, matplotlib.pyplot nicht zu sehen Linie Plot

import matplotlib.pyplot as plt 

def plot_test(item): 
    xdata = [] 
    ydata = [] 
    for item in list_of_epoch_total_time_tuples: 
     xdata = item[0] 
     ydata = item[3] 

    plt.plot(xdata,ydata) 
    plt.ylabel('epoch_counter') 
    plt.xlabel('square_error') 
    plt.show() 

Hier ist meine Ausgabe:

enter image description here

Ich kann das Liniendiagramm sehen. Die Grafik ist leer?

1) Wie kann ich diese zeichnen richtig

2) Wie kann ich bieten Grundstück Bereich, so gibt es keine negativen Werte?

Dank

Antwort

1

Zuerst muss der Code aus dem Bildschirm greifen plt.plot(xdata,item[3:]), während der Code, den Sie auf die Frage hinzugefügt ist plt.plot(xdata,ydata), die ich davon ausgehen, ist das, was Sie wollen. Das Problem ist, dass Sie xdata und ydata bei jeder Iteration überschreiben, also ist es nur der einzelne Elementwert. Verwenden Sie stattdessen:

Dies wird den Wert an das Ende der Liste hinzufügen, anstatt die Daten der Variablen zu überschreiben. Auch haben Sie Artikel als Parameter für plot_test(), aber es scheint nicht überall verwendet zu werden, und Sie verwenden auch das Element name als Ihren for-Schleife Parameter. Sie sollten vermeiden, den gleichen Namen an zwei Orten wie diesem zu verwenden, da dies verwirrend sein kann.

Für den Bereich zu ändern können Sie:

plt.xlim(xmin=some_min, xmax=some_max) 

oder

plt.xlim(xmin=some_min) 

wenn Sie nur die Minuten ändern möchten. Und Sie können einen ähnlichen Befehl für Ylim tun.

Wenn Sie einen Datensatz haben, können Sie auch mit numpy suchen. Die Verwendung von numpigen Arrays ist im Allgemeinen schneller als die Verwendung von Listen und für Schleifen

Verwandte Themen