Scatter matplotlib

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
Hypec
User
Beiträge: 183
Registriert: Mittwoch 1. August 2018, 16:11

Hallo,
ich will mit dieser Funktion einen Plot erstellen wo Punkte wenn das Label 1 ist rot angezeigt werden und wenn das Label -1 ist blau angezeigt werden. Das Problem ist wenn der letzte Punkt als Label 1 hat werden alle Punkte Rot angezeigt und wenn das Label -1 ist werden alle Punkte blau angezeigt. Was muss ich hier anderst machen das jeder Punkt die Farbe bekommt die seinem Label zugeordnet ist?

Code: Alles auswählen

def show(x,y,label) :
        fig, ax = plt.subplots(figsize=(5,5))
        for l in label:
            if l == 1:
                color='red'
                ax.scatter(x, y, c=color, label=color)
            elif l == -1: 
                color='blue'
                ax.scatter(x, y, c=color, label=color)

        ax.legend()
        plt.show()
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

was übergibst du denn der Funktion show() als x,y,label ?
Sind das alles drei Listen?
Auf die Schnelle würde ich sagen, erstelle x,y für alle Label 1 für ax.scatter in rot
und dann x,y für alle Label -1 für ax.scatter in blau
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Hypec
User
Beiträge: 183
Registriert: Mittwoch 1. August 2018, 16:11

Ja es alle 3 Werte sind Listen.
Benutzeravatar
__blackjack__
User
Beiträge: 13080
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Hypec: Du plottest für jedes Label immer *alle* Punkte in *einer* Farbe *übereinander*. Da bleibt natürlich sichtbar am Ende natürlich nur noch die Farbe in der als letztes alles geplottet wurde. `color` sollte man auch eine Liste übergeben können die pro Punkt die Farbe enthält.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Ja, wie ich vermutete.
Versuchs mal so:

Code: Alles auswählen

def show(x, y, labels) :
        fig, ax = plt.subplots(figsize=(5,5))
        choice = {1: 'red', -1: 'blue'}
        color = [choice[label] for label in labels]
        ax.scatter(x, y, c=color)
        ax.legend()
        plt.show()
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Antworten