Seite 1 von 1

Matplotlib fehlende Daten nicht zeichnen

Verfasst: Dienstag 2. Dezember 2014, 22:35
von grinder25
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()

Re: Matplotlib fehlende Daten nicht zeichnen

Verfasst: Mittwoch 3. Dezember 2014, 08:02
von Sirius3
@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()

Re: Matplotlib fehlende Daten nicht zeichnen

Verfasst: Mittwoch 3. Dezember 2014, 10:57
von lackschuh
@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

Re: Matplotlib fehlende Daten nicht zeichnen

Verfasst: Mittwoch 3. Dezember 2014, 11:09
von 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.

Re: Matplotlib fehlende Daten nicht zeichnen

Verfasst: Mittwoch 3. Dezember 2014, 11:27
von lackschuh
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()))

Re: Matplotlib fehlende Daten nicht zeichnen

Verfasst: Mittwoch 3. Dezember 2014, 12:06
von snafu
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.

Re: Matplotlib fehlende Daten nicht zeichnen

Verfasst: Mittwoch 3. Dezember 2014, 14:23
von grinder25
@Sirius3: Danke läuft so!