Zeichnen von Linien und Rechtecken in Matplotlib

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
Benutzeravatar
woody55
User
Beiträge: 13
Registriert: Freitag 4. Mai 2012, 22:00
Wohnort: /welt/graz/home

Hallo, liebe Python-Freunde!

Ich möchte ein Programm zur Analyse von Börsenkursen und Testen von Strategien entwickeln (ich weiss, schon wieder ein Wahnsinniger). Diese Beiträge habe ich schon gesehen:
http://www.python-forum.de/viewtopic.ph ... andlestick
http://www.python-forum.de/viewtopic.php?f=6&t=28960
http://www.python-forum.de/viewtopic.ph ... ilit=börse
http://www.python-forum.de/viewtopic.ph ... ilit=börse
http://www.python-forum.de/viewtopic.ph ... ilit=börse

Mein Programm besteht aus drei Komponenten, dem Loader, dem Charting-Modul und dem Analysator.

Projekt-Status:
Loader: ladet Yahoo-Daten, schreibt sie in eine SQLite-Datenbank, extrahiert Datensätze und Tabellenspalten -> im Wesentlichen fertig und fehlerfrei
Analysator: noch im Planungsstadium
Charting: das Problemkind

Eine Version unter Tkinter habe ich schon fertig und die geht auch:
Bild

Unter matplotlib gibt es das 'finance'-Modul, das aber nicht besonders schöne Charts erstellt und für mich nicht brauchbar ist, da ich auch Heikin-Ashi, P&F und andere Charttypen darstellen möchte.
Ich möchte meine Kursdaten mit Linien und Rechtecken selbst zeichnen, matplotlib soll die Skalierung übernehmen.

Welche Möglichkeiten habe ich?
Geht das mit der matplotlib.patches?

Bitte um Vorschläge!
Nach Diktat vereist.
Äh - nein, falsch.
Nach Diktat vergreist.
Mist!
Nach Dicktat ... es interessiert sowieso niemanden.
Benutzeravatar
woody55
User
Beiträge: 13
Registriert: Freitag 4. Mai 2012, 22:00
Wohnort: /welt/graz/home

Hallo, liebe Python-Freunde!

Ich habe jetzt eine Alternativlösung gefunden, die viel besser ist: 'finance.py' wurde gepatcht!
Diese Datei findet ihr unter (Ubuntu-)Linux im Verzeichnis "/usr/share/pyshared/matplotlib/".

Dazu ein Codeauszug:

Code: Alles auswählen

        if close>=open :
            color = colorup
            lower = open
            height = close-open
        else           :
            color = colordown
            lower = close
            height = open-close

        vline = Line2D(
            xdata=(t, t), ydata=(low, high),
            color='k',
            linewidth=0.5,
            antialiased=True,
            )
Kurze Beschreibung:
Mit der if-Abfrage wird entschieden, ob die Kerze rot (Schlusskurs 'close' niedriger als Eröffnungskurs 'open') oder grün (open < close) gezeichnet werden soll. Leider hat der Entwickler diese Farbe beim Aufruf von Line2D nicht mit übernommen. Ändert man den Aufruf zu

Code: Alles auswählen

        vline = Line2D(
            xdata=(t, t), ydata=(low, high),
            color = color, # vorher >>>color='k',<<<
            linewidth=0.5,
            antialiased=True,
            )
so sieht es doch gleich besser aus :D :
Bild

Eine Frage an die Python-Experten: Gibt es eine Möglichkeit, irgendwo diesen Patch zu posten, damit die Entwickler dies bei der nächsten Änderung übernehmen können?
Sorry, ich programmiere erst seit einem Monat in Python und bin in die tieferen Geheimnisse noch nicht eingedrungen.
Nach Diktat vereist.
Äh - nein, falsch.
Nach Diktat vergreist.
Mist!
Nach Dicktat ... es interessiert sowieso niemanden.
BlackJack

@woody55: Zitat von der Matplotlib-Webseite: „You can file bugs, patches and feature requests on the github tracker, but it is a good idea to ping us on the mailing list too.”

Mailinglisten: http://sourceforge.net/mail/?group_id=80706
Tracker: https://github.com/matplotlib/matplotlib/issues

Da die mittlerweile GitHub verwenden könntest Du Dich vielleicht auch in Git einarbeiten, forken, Deine Änderungen machen, und einen „pull request” stellen. Aber vielleicht erst einmal auf der Entwicklermailingliste Dein Anliegen vorstellen und sehen was sie Dir dort als weiteres Vorgehen raten.
Benutzeravatar
woody55
User
Beiträge: 13
Registriert: Freitag 4. Mai 2012, 22:00
Wohnort: /welt/graz/home

@Blackjack: Danke!
Nach Diktat vereist.
Äh - nein, falsch.
Nach Diktat vergreist.
Mist!
Nach Dicktat ... es interessiert sowieso niemanden.
Antworten