2017-06-07 5 views
0

Ich habe eine Liste von Preisen, die ich mit Matplotlib plotten möchte, und wenn ich das tue, ist alles in Ordnung. Hier ist mein Code:Die Verwendung der matplots 'axis' Anweisung lässt mein Plot verschwinden

def plot_prices_and_events(prices, buy=None, sell=None): 
    data = [] 
    max_price = 0 
    min_price = sys.maxint 
    values = prices.get_values() 
    for price in values: 
     current_price = price[1] 
     data.append(current_price) 
     if current_price > max_price: 
      max_price = price[1] 
     if current_price < min_price: 
      min_price = current_price 
    plt.ylabel('Bitcoin price in EUR') 
    plt.xlabel('Date') 
    start_date = datetime.datetime.fromtimestamp(values[0][0]) 
    end_date = datetime.datetime.fromtimestamp(values[-1][0]) 
    plt.plot(data) 
    #plt.axis([start_date, end_date, min_price, max_price]) 
    if buy is not None: 
     plt.plot(buy) 
    if sell is not None: 
     plt.plot(sell) 
    plt.show() 

Mit einer Zeile auf Kommentar, alles ist in Ordnung: plot with plane axis

Doch wenn ich versuche, den Maßstab für die x-Achse zu setzen, so dass die Linie uncommenting, die Achse wird korrekt angezeigt, aber meine Handlung verschwindet:

no more plot!

Dies ist reproduzierbar auf zwei Maschinen und durch Kommentare und uncommenting die entsprechende Zeile. Fehle ich etwas? Ich habe schon mit der Reihenfolge der Befehle herumgespielt, die offiziellen Tutorials überprüft und gegoogelt. Das Problem scheint nicht zu weit verbreitet zu sein, also hoffe ich auf euch Leute.

Vielen Dank im Voraus und ich hoffe, ich bin nur dumm. ^^

EDIT: Das Problem ist gelöst, aber die Lösung ist teilweise in den Kommentaren zu finden. Fazit: Die Preise wurden nicht korrekt bestellt.

+1

Offensichtlich plottet Ihre 'plt.plot()' Daten als Funktion von '[0: number_of_times]' zu Preisen. Sie müssen den X-Bereich auch in Ihrem 'plt.plot()' –

Antwort

2

Wie @Dmitri Chubarov sagte in einem Kommentar, indem Sie plt.plot(data) aufrufen, bieten Sie nur vertikale Koordinaten. matplotlib muss dann annehmen, dass die horizontalen Koordinaten nur [0:len(data)] sind.

Sie sagen später, dass die horizontale Achse auf [start_date, end_date] verschoben werden soll. Keiner Ihrer Datenpunkte hat jedoch eine horizontale Koordinate in diesem Bereich, da die horizontalen Koordinaten [0:len(data)] sind.

Sie müssten auch horizontale Koordinaten für Ihre Daten bereitstellen, damit dies besser funktioniert. Z.B. plt.plot(dates, data), wobei eine Liste von Daten gleicher Länge wie data ist.

+0

korrekt angeben. Danke euch beiden. Dies scheint offensichtlich, sobald Sie es wissen. Ich habe eine Liste von Daten für jeden Preis hinzugefügt und es dem plot() - Aufruf hinzugefügt. Jetzt ist die Achse korrekt beschriftet, aber mein Grundstück geht verrückt: https://i.imgur.com/gusg9yD.png – Aarkon

+2

Sind Sie sicher, dass Ihre Daten nach ihrem Datum sortiert sind? – acdr

+0

Ich hatte nicht Zweifel, dass sie bis jetzt waren, aber ich werde das genauer untersuchen, bevor ich weiter gehe. Vielen Dank! – Aarkon

Verwandte Themen