Ordne den Farben in Matplotlib Werte zu

9

Ich habe eine Liste von Zahlen wie folgt:

%Vor%

Ich möchte diese Zahlen in Farben für die Anzeige konvertieren. Ich möchte Graustufen, aber wenn ich diese Zahlen verwende, gibt es einen Fehler:

%Vor%

... was ich verstehe, liegt daran, dass es 1 überschreitet.

Als nächstes versuchte ich, die Elemente in der Liste mit der höchsten Nummer in der Liste zu teilen, um Werte kleiner als 1 zu geben. Aber dies ergibt eine sehr enge Farbskala mit kaum einem Unterschied zwischen den Werten.

Gibt es irgendeine Möglichkeit, den Farben einen minimalen und maximalen Bereich zu geben und diese Werte in Farbe umzuwandeln? Ich benutze Matplotlib.

    
genomic 26.02.2015, 21:05
quelle

2 Antworten

14

Das Modul matplotlib.colors ist das, wonach Sie suchen. Dies bietet eine Reihe von Klassen zum Zuordnen von Werten zu Colourmap-Werten.

%Vor%

Der allgemeine Ansatz besteht darin, die minima und maxima in Ihren Daten zu finden. Verwenden Sie diese, um eine Normalize -Instanz zu erstellen (andere Normalisierungsklassen sind verfügbar, z. B. logarithmische Skalierung). Als Nächstes erstellen Sie ein ScalarMappable mit der Normalize -Instanz und der ausgewählten Colormap . Sie können dann mapper.to_rgba(v) verwenden, um von einem Eingabewert v über Ihre normalisierte Skala auf eine Zielfarbe zu mappen.

%Vor%

Erzeugt die Ausgabe:

%Vor%

Die matplotlib.colors Moduldokumentation enthält bei Bedarf weitere Informationen.

    
mfitzp 26.02.2015, 21:16
quelle
1

Colormaps sind mächtig, aber (a) Sie können oft etwas einfacher machen und (b) weil sie stark sind, tun sie manchmal mehr als ich erwarte. Das Beispiel von mfitzp erweitern:

%Vor%

    
cphlewis 26.02.2015 22:09
quelle

Tags und Links