Mehrere Graphen im gleichen Koordinatensystem

Registriere dich jetzt, um exklusive Vorteile zu genießen! Als registriertes Mitglied kannst du Inhalte herunterladen und profitierst von einem werbefreien Forum.
Mach mit und werde Teil unserer Community!
  • Hallo,


    ich habe verschiedene Datensätze, die ich gerne im gleichen Koordinatensystem plotten möchte, um besser zu vergleichen.

    Der Hintergrund ist der:
    Ich ermittele mit einem Skript, ob eine Zahl einer bestimmten Bauform eine Primzahl ist oder nicht. Dann bekomme ich beispielsweise diese Liste dabei raus:

    Code
    vektor = [True, False, False, True, True, False, False, False, False, True, True]

    Nun möchte ich den Verlauf plotten. Dazu ermittele ich zuerst die Anzahl der Primzahlen. Dies habe ich mit dieser Funktion realisiert:

    Code
    def anzahl_ermitteln(vektor):
        if vektor == False:
            return
        ywerte = []
        anzahl = 0
        for eintrag in vektor:
            if eintrag == True:
                anzahl += 1
            ywerte.append(anzahl)
        return ywerte

    Dann plotte ich mit dieser Funktion:

    Code
    def liste_plotten(vektor):
        y_rohdaten = []
        xwerte = []
        for eintrag in vektor:
            xwerte.append(eintrag[0])
            y_rohdaten.append(eintrag[1])
        ywerte = anzahl_ermitteln(y_rohdaten)
        print("Y-Werte:", ywerte)
        plt.plot(xwerte, ywerte)
        plt.show()

    Es funktioniert auch, ich bekomme einen Plot wie den Folgenden:


    Nun möchte ich aber mehrere Datensätze im gleichen Koordinatensystem plotten.


    Wie bekomme ich das hin?

  • Ganz einfach: plot mehrfach aufrufen:


  • neuernutzer Eine Funktion sollte in allen Zweigen einen expliziten Wert zurück, nicht mal ``return wert`` und mal nur ``return``. Wobei das erste auch gar nicht vorkommen sollte, denn an einen Namen sollten Werte vom gleichen („Duck“-)Typ gebunden werden. Also bei `vektor` eine Liste oder irgendetwas iterierbares, aber dann nicht auch noch manchmal ein Wahrheitswert (oder eine ganze Zahl).


    Man macht keine Vergleiche mit literalen Wahrheitswerten. Da kommt ja nur wieder ein Wahrheitswert bei heraus. Entweder der, den man sowieso schon hatte, oder dessen Gegenteil. Dafür gäbe es dann ``not``.


    Der Funktionsname ist etwas generisch. Das ist eigentlich unter „kumulative Summe“ bekannt, was da gemacht wird. Und man kann das mit `itertools.accumulate()` deutlich einfacher ausdrücken. Und zwar so einfach, dass sich da IMHO nicht wirklich eine eigene Funktion für lohnt.


    Du darfst nicht direkt nach dem `plot()`-Aufruf `show()` aufrufen. Das darf erst passieren wenn der Plot komplett ist. Ich würde auch die API verwenden die auf diesem impliziten, globalen Plot operiert, sondern die objektorientierte API verwenden.


    Ungetestet:

    „Eat the rich — the poor are full of preservatives.“ — Rebecca ”Becky” Connor, The Connors