Seite 1 von 1

matplot: Variable mit Komma

Verfasst: Mittwoch 11. November 2020, 19:28
von caargoo
Hallo,
ich habe hier https://riptutorial.com/de/matplotlib/e ... darstellen
ein Beispiel gefunden in dem 2x line, vorkommt.
Was hat es da mit dem Komma auf sich?

MfG

Re: matplot: Variable mit Komma

Verfasst: Mittwoch 11. November 2020, 20:25
von __blackjack__
@caargoo: Damit steht links von der Zuweisung nicht ein einzelner Name sondern ein Tupel mit einem einzelnen Namen. Und da passiert dann ”tuple unpacking”:

Code: Alles auswählen

In [57]: xs = [42]                                                              

In [58]: line = xs                                                              

In [59]: line                                                                   
Out[59]: [42]

In [60]: line, = xs                                                             

In [61]: line                                                                   
Out[61]: 42
Ich persönlich finde es ja ein bisschen kryptisch das so zu schreiben und fände das hier lesbarer:

Code: Alles auswählen

In [62]: line = xs[0]                                                           

In [63]: line                                                                   
Out[63]: 42

Re: matplot: Variable mit Komma

Verfasst: Mittwoch 11. November 2020, 20:54
von Sirius3
@caargoo: das Beispiel ist hat einige Fehler. `as` bei import ist dazu da etwas umzubenennen, animation wird aber gar nicht umbenannt. Dateien öffnet man nicht irgendwo, und verwendet sie irgendwo anders, sondern das sollte alles innerhalb eines with-Blocks stattfinden.
`datalist` wird initialisiert, dann beim plot aber gar nicht benutzt. Dann werden mittendrin einfach Funktionen definiert, die viele globale Variablen verwenden. `eval` darf man auf keinen Fall verwenden, zumal hier ein einfaches float ausreichend ist. Statt readline sollte man die Datei mit einer for-Schleife lesen.

Code: Alles auswählen

import collections
import matplotlib
import matplotlib.pyplot as plt
from matplotlib import animation

def update(data, plots):
    plots.set_ydata(data)
    return plots

def data_gen(data, filename):
    with open(filename) as lines:
        for line in lines:
            data.append(float(line))
            yield data

def main():
    #configure the graph itself
    filename = "pipe"
    amount = 1000
    data = collections.deque([0] * amount, amount)
    fig, ax = plt.subplots()
    plots = ax.plot(data)
    ax.set_ylim(0, 256)
    ani = animation.FuncAnimation(fig, update, data_gen(data, filename), fargs=(plots,), interval=10, blit=True)
    plt.show()

if __name__ == '__main__':
    main()

Re: matplot: Variable mit Komma

Verfasst: Donnerstag 12. November 2020, 16:14
von caargoo
Dank Euren Erklärungen ist wieder einiges für mich klarer geworden.

MfG