Matplotlib fehlende Daten nicht zeichnen

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
grinder25
User
Beiträge: 4
Registriert: Mittwoch 20. August 2014, 13:04

Hallo,

Ich möchte mittels der Matplotlib Wetterdaten visualisieren.
Dabei kann es vorkommen, dass an gewissen Zeitpunkten keine Werte aufgezeichnet werden.
Zu diesen Zeitpunkten sollte der Plot eine Lücke aufweisen, die Lib interpoliert allerdings die fehlenden Werte. (siehe Bild ca. 9-10 Uhr)
Gibt es hierfür eine Lösung?

Bild:
https://www.dropbox.com/s/yopuew5dr4augt1/wind.png?dl=0

Code:

Code: Alles auswählen


def zeichne_wind(x, daten):
    plt.clf()
    plt.gca().xaxis.set_major_formatter(matplotlib.dates.DateFormatter('%H:%M'))
    plt.gca().xaxis.set_major_locator(matplotlib.dates.HourLocator(interval=6)) 
    plt.gca().xaxis.set_minor_locator(matplotlib.dates.HourLocator())
    plt.gcf().autofmt_xdate()
    plt.ylabel('Windgeschwindigkeit in m/s')
    plt.grid()
    plt.plot(x, daten, color='r')
    plt.xticks(rotation='vertical')
    plt.show()
    plt.close()
Sirius3
User
Beiträge: 17738
Registriert: Sonntag 21. Oktober 2012, 17:20

@grinder25: Du mußt fehlende Werte mit NaN belegen:

Code: Alles auswählen

import random
import matplotlib.pyplot as plt
x = range(10)
y = [random.random() for _ in x]
y[4] = float('nan')
plt.plot(x,y)
plt.show()
lackschuh
User
Beiträge: 281
Registriert: Dienstag 8. Mai 2012, 13:40

@Sirius3

Code: Alles auswählen

y = [random.random() for _ in x]
Wie würde dies 'ausgeschrieben' aussehen? Ich versteh das mit dem '_' irgendwie nicht...

Danke
BlackJack

@lackschuh: Das `_` ist ein Variablenname. Kannst da auch `i` oder `x` für schreiben, oder `hoppelhase`. :-)

Der `_` als Name wird konventionell oft für Werte verwendet die einen nicht interessieren, wo aus syntaktischen Gründen aber ein Name stehen muss.
lackschuh
User
Beiträge: 281
Registriert: Dienstag 8. Mai 2012, 13:40

Ok danke, dachte das '_' sei eventuell geheime 'built in' Variable, weil ich das so noch nie sah :mrgreen:

Code: Alles auswählen

y = []
for hoppelhase in x:
    y.append((random.random()))
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Naja, das ``_`` hat im Interpreter durchaus eine spezielle Bedeutung:

Code: Alles auswählen

>>> 1 + 1
2
>>> print(_)
2
>>> _ + 3
5
Es kann also der zuletzt ausgegebene Wert erneut verwendet werden. In Programmen sollte man diese Funktionalität aber natürlich nicht verwenden.

Ob man im Falle von nicht verwendeten Namen etwas sprechendes wie "dummy" oder "unused" verwendet, oder ob man es bei dem symbolischen "_" belässt, ist wohl Geschmackssache.
grinder25
User
Beiträge: 4
Registriert: Mittwoch 20. August 2014, 13:04

@Sirius3: Danke läuft so!
Antworten