Plot gibt die Daten mit falscher Reihenfolge wieder

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
criptoivan
User
Beiträge: 9
Registriert: Freitag 15. Dezember 2017, 01:14

Hi,
ich kann die Uhrsache nicht finden.
Die Daten auf X-Achse werden nicht in der richtigen Reihenfolge angezeigt. Die grossere Zahlen erscheinen zwischen den kleinen. Sie sollen doch automatisch aufsteigend nach rechts verschoben werden. Hat jemand eine Idee?

Leider habe ich nicht hingekriegt hier das Bild davon hochzuladen. :K


Code: Alles auswählen

# -*- coding: utf-8 -*-
"""
Spyder Editor

This is a temporary script file.
"""

#from config.txt import polo_key, polo_secret

import requests, json
import numpy as np

import matplotlib.pyplot as plt






def public_method(command): #holt die daten aus Poloniex. Typ dict
                            #Variablen für Funktion:
                            #returnLoanOrders&currency=LTC -> gibt daten von Verleiverlauf für LTC
                            
    url = 'https://poloniex.com/public?command={0}'.format(command)
    api = requests.get(url)
    data = json.loads(api.text)#json-Format in python-dict konvertieren
    
    return data




Date_Lean_LTC = public_method('returnLoanOrders&currency=LTC')# Verlei-Daten aus Poloniex rausholen
    

first_key = list(Date_Lean_LTC)[0]
#print(first_key)
first_list = Date_Lean_LTC[first_key]
#print(first_list)
#print(first_list[0]['rate'])


a_rate = []
a_amount = []
a_rangeMin = []
a_rangeMax = []

for second_dict in first_list:
    #print(second_dict)
    print(second_dict['rate'], second_dict['amount'], second_dict['rangeMin'], second_dict['rangeMax'])
    
    a_rate = np.append(a_rate, second_dict['rate'])
    a_amount = np.append(a_amount, second_dict['amount'])
    a_rangeMin = np.append(a_rangeMin, second_dict['rangeMin'])
    a_rangeMax = np.append(a_rangeMax, second_dict['rangeMax'])



x = a_rate
y = a_amount

plt.xticks(rotation='vertical')
plt.subplots_adjust(bottom=0.25,left=0.2)#Graph in der Fenster ausrichten

plt.bar(y,x)
plt.show()

Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@criptoivan: `requests` kennt eine `json`-Methode, die Parameter der URL sollten auch als Parameter an requests übergeben werden, damit Sonderzeichen richtig behandelt werden. Der Variablenname `Date_Lean_LTC` hält sich nicht an die Namenskonvention. Wenn Du die Werte zu `offers` willst, nutze den Key und hoffe nicht, dass das erste Element eines unsortierten Wörterbuchs zufälligerweise richtig ist. `first_list` sollte dementsprechend auch `offers` heißen. Das Präfix `a_` ist so überflüssig, wie `second_dict` irgendeine Aussagekraft hat (von was das zweite, geht eine for-Schleife nicht alle Elemente durch)? np.append ist hier die falsche Methode. Du willst Listen verwenden. Warum nennst Du a_rate und a_amount in x und y um?

Für mich sind in den Listen Strings statt Zahlen, so dass das ganze Plotten gar nicht funktioniert.
criptoivan
User
Beiträge: 9
Registriert: Freitag 15. Dezember 2017, 01:14

Hi,
Danke für die schnelle Antwort.
Ich habe mit programmieren vor Par Wochen angefangen. Dacher kenne ich die ganze Vorgehensweise und Regeln beim Programmieren nicht. Bitte sag mir nicht nur wo falsch gemacht ist sondern auch wie es richtig aussehen soll.
Hast du Script gestartet? Ist bei dir die Reihenfolge auch falsch? Vielleicht steckt Problem bei Spyder-Einstellungen oder Python-Version?
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@criptoivan: ich habe immer dazu geschrieben, wie es richtig sein sollte. Was verstehst Du daran nicht?
criptoivan
User
Beiträge: 9
Registriert: Freitag 15. Dezember 2017, 01:14

Namenskonvention Beim Python. Wie sieh es richtig aus?
Und das erklärt falsche Reihenfolge nicht
narpfel
User
Beiträge: 645
Registriert: Freitag 20. Oktober 2017, 16:10

@criptoivan: Die Namenskonventionen findet man in PEP 8. Zur Reihenfolge: Sirius3 hat geschrieben, dass `x` und `y` bei ihm Strings enthalten. Welchen Typ haben die Elemente bei dir? Wenn man versucht, Strings zu plotten, sortiert `matplotlib` die Werte lexikographisch, das könnte also zu deinem Fehlerbild passen.
criptoivan
User
Beiträge: 9
Registriert: Freitag 15. Dezember 2017, 01:14

Stimmt, das kann sein. Ich probiere alles mit Int() umwandeln
narpfel
User
Beiträge: 645
Registriert: Freitag 20. Oktober 2017, 16:10

@criptoivan: `numpy`-Arrays haben eine `astype`-Methode.
criptoivan
User
Beiträge: 9
Registriert: Freitag 15. Dezember 2017, 01:14

Supper, hat funktioniert.
Ich habe nur das gemacht und es macht was ich will.

Code: Alles auswählen


x = a_rate.astype(float)
y = a_amount.astype(float)

Vielen Dank.
Ich habe gestern 4 Stunden damit gekämpft. :lol:

Ich habe noch eine Frage:

Man bekommt die Methoden aus Bibliotheken. Wie und wo kann ich überblick über ganzen Bibliotheken bekommen? Und wie ich die richtige Methode raussuchen kann? Wie orientiert man sich?
narpfel
User
Beiträge: 645
Registriert: Freitag 20. Oktober 2017, 16:10

@criptoivan: Die Dokumentation der Bibliothek beschreibt üblicherweise alles, was eine Bibliothek kann. Bei Fragen zu Python direkt dann die Python-Dokumentation.

Falls du wissen möchtest, was für Bibliotheken es gibt: Quasi alle Python-Bibliotheken sind im Cheeseshop gelistet, und dann gibt es auch noch Awesome Python.

Ansonsten: Die Suchmaschine deiner Wahl mit den richtigen Suchbegriffen füttern. :wink:
criptoivan
User
Beiträge: 9
Registriert: Freitag 15. Dezember 2017, 01:14

Danke Jungs,
jetzt kann ich weiter lernen
Antworten