[Matplotlib] Platzhalter in Diagramm

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
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Es geht um Platzhalter in einem Liniendiagramm.
Folgende als x-/y-werte funktioniert nicht:

Code: Alles auswählen

import matplotlib.pyplot as  pyplot
x = range(4)
y = [1, 2, None, .3]
fig = pyplot.figure()
dia = fig.add_subplot(111)
dia.plot(x, y)
Zumindest nicht so wie es gedacht (Kein Plot, Plot bis zum None, usw) ...

None gibt es, wenn Messfehler vorkommen oder die Daten anderweitig nicht vorhanden sind, deswegen fällt ein ersetzen durch `0' ebenfalls flach.

Wie komme ich also zu einem Platzhalterelement?
Benutzeravatar
HerrHagen
User
Beiträge: 430
Registriert: Freitag 6. Juni 2008, 19:07

NaN machst du wie von dir beschrieben.
Der Plot ist korrekt. Wohin soll der Plot denn von NaN zu 3 gehn?
Versuchs mal damit (eine Nummer mehr), ich glaub da wird es klar:

Code: Alles auswählen

>>> from pylab import *
>>> x = [0,1,2,3,4]
>>> y = [0,1,None,3,4]
>>> plot(x,y)
MFG HerrHagen
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Hoi,

hatte mal ein ähnliches Problem, dann rumgefrickelt und die Lösung online gestellt:
Plotting with masked arrays. Ist nicht mehr ganz up to date, zeigt aber hoffentlich, wie eine Lösung aussehen kann. Du müsstest natürlich die Maskierungsbedingung und die Darstellungsart für Dich anpassen.

HTH
Christian

PS Der scipy-Server scheint aktuell Probleme zu haben. Falls Du es so nicht anzeigen kannst: googlen nach "matplotlib masked array" und den Cache anzeigen lassen.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Danke HerrHagen. Natürlich ... Denkfehler von mir ;)

Danke CM, werd ich mir mal anschauen, obwohl mein "Problem" schon gelöst ist. Vielleicht gehts damit ja noch besser ;)
Antworten