Zeichnen eines maskierten Oberflächendiagramms mit Python, Numpy und Matplotlib

8

Ich plane eine Oberfläche mit Matplotlib 1.1.0.

Die Z-Achse der Zeichnung ist wie folgt maskiert:

%Vor%

Aber ich sehe die Maske nicht in der Handlung. Ich habe die Maske selbst als Subplot geplottet

%Vor%

Was funktioniert hat, weiß ich, dass meine Maske tatsächlich True-Werte enthält.

Vollständiger Code:

%Vor%

Das habe ich:

Das ist was ich will (von Matlab):

Was vermisse ich?

    
stanri 13.06.2012, 17:25
quelle

2 Antworten

1

Sie können es tun, aber Sie müssen es tun, indem Sie die Oberflächenseiten manuell einfärben;

Die cmap-Funktion nimmt einen nubmer zwischen 0 und 1, also müssen wir nur die Werte normalisieren, bevor sie die cmap-Funktion aufrufen.

%Vor%

Ich sollte auch darauf hinweisen, dass matplotlib Ihr z-Array zu real macht - ob Sie dies absichtlich nutzen, obwohl ich es nicht weiß.

    
will 22.02.2015, 10:19
quelle
12

Fraxel erwähnte, dass surface_plot die Maskierung nicht unterstützt. Um das Problem zu umgehen, habe ich Folgendes gemacht:

Ich maskierte die z-Achsen-Daten im Grunde manuell, indem ich jeden maskierten Wert wie folgt auf numpy.nan setzte:

%Vor%

Allerdings hat es meine Colormap-Skalierung durcheinander gebracht. Um das zu beheben, habe ich Folgendes getan:

%Vor%

Nicht 100% was ich wollte, aber trotzdem ein guter Kompromiss.

    
stanri 14.06.2012 18:06
quelle

Tags und Links