2012-10-12 5 views
11

Ich verwende die Klasse matplotlib.patches.Polygon, um Polygone auf einer Karte zu zeichnen. Tatsächlich sind die Informationen über die Koordinaten der Ecken der Polygone und ein Gleitkommadatenwert für jedes "Polygon" angegeben. Jetzt möchte ich diese Datenwerte (von 0 bis 3e15) in Farbinformationen konvertieren, um es schön zu visualisieren. Was ist die beste Vorgehensweise, um das in Python zu tun?Wie konvertiert man Datenwerte in Farbinformationen für Matplotlib?

Ein Ausschnitt aus meinem Code:

poly = Polygon(xy, facecolor=data, edgecolor='none') 
plt.gca().add_patch(poly) 
+0

von Hilfe (matplotlib.pyplot .plot): 'Sie können Farben in vielen seltsamen und wunderbaren Möglichkeiten angeben, einschließlich voller Namen ('grün'), hex Strings ('# 008000'), RGB- oder RGBA-Tupel ((0,1,0,1)) oder Graustufenintensitäten als String ('0.8') ' –

Antwort

20

im RGB-Farbsystem zwei Bits von Daten werden für jede Farbe, Rot, Grün und Blau verwendet. Das bedeutet, dass jede Farbe auf einer Skala von 0 bis 255 läuft. Schwarz wäre 00,00,00, während Weiß 255,255,255 wäre. Matplotlib hat viele vordefinierte Colormaps für Sie zu verwenden. Sie sind alle auf 255 normiert, so laufen sie von 0 auf 1. So müssen Sie nur Ihre Daten normalisieren, dann können Sie manuell wählen Sie die Farben aus einer Farbkarte wie folgt:

>>> import matplotlib.pyplot as plt 

>>> Blues = plt.get_cmap('Blues') 
>>> print Blues(0) 
(0.9686274528503418, 0.9843137264251709, 1.0, 1.0) 
>>> print Blues(0.5) 
(0.41708574119736169, 0.68063054575639614, 0.83823145908467911, 1.0) 
>>> print Blues(1.0) 
(0.96555171293370867, 0.9823452528785257, 0.9990157632266774, 1.0) 

Hier sind alle der predefined colormaps. Wenn Sie sind daran interessiert, eigene Farbkarten zu erstellen, here ist ein gutes Beispiel. Auch here ist ein Papier von IBM über die sorgfältige Auswahl der Farben, etwas, das Sie in Betracht ziehen sollten, wenn Sie Farbe verwenden, um Daten zu visualisieren.

+0

Thx! Klappt wunderbar! – HyperCube

+0

Ich bin verwirrt, 256 ist 2 ** 8, vielleicht meinst du 8 Bits = 1 Byte Daten für jede Farbe? – Ziofil

3

Wert konvertieren aus, dass von 0 bis + unendlich auf einen Wert, der von Bewertung: 0.0 bis 1,0

import matplotlib.pyplot as plt 

price_change = price_change ** 2/(1 + price_change ** 2) 
Blues = plt.get_cmap('Blues') 
print Blues(price_change) 

Eine vollständige Liste der Farbabbildungstabellen geht geht, ist hier: http://matplotlib.org/users/colormaps.html

Verwandte Themen