eigene Colormaps

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
pythonnewbie
User
Beiträge: 5
Registriert: Dienstag 11. September 2007, 14:24

He kann mir jemand sagen wie ich eigene Colormaps erstelle, ist zwar ne Hilfe bei:
http://www.scipy.org/Cookbook/Matplotlib/Show_colormaps
jedoch versteh ich das System nicht
1 from pylab import *
2
3 cdict = {'red': ((0.0, 0.0, 0.0),
4 (0.5, 1.0, 0.7),
5 (1.0, 1.0, 1.0)),
6 'green': ((0.0, 0.0, 0.0),
7 (0.5, 1.0, 0.0),
8 (1.0, 1.0, 1.0)),
9 'blue': ((0.0, 0.0, 0.0),
10 (0.5, 1.0, 0.0),
11 (1.0, 0.5, 1.0))}
12 my_cmap = matplotlib.colors.LinearSegmentedColormap('my_colormap',cdict,256)
13 pcolor(rand(10,10),cmap=my_cmap)
14 colorbar()
sieht da jemand durch und kann es mir vielleicht erklären?
Für was sind die einzelnen Einträge gut? wieso habe ich bei einer Farbe neun Parameter?
Vielen Dank
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Hoi und willkommen im Forum,

vorweg: Magst Du beim nächsten Post Code in Python-Tags setzen? Dann kann man Deinen Code viel leichter lesen ...

Hilft es Dir wenn ich Dir sage, daß der Code einen Fehler enthält? Wenn Du in Zeile 4 (0.5, 1.0, 0.7) gegen (0.5, 0.1, 0.7) austauscht, wird das Bild, das Du generierst zwar häßlich, aber die Beschreibung im Wiki stimmt wieder.

Gruß,
Christian
pythonnewbie
User
Beiträge: 5
Registriert: Dienstag 11. September 2007, 14:24

hmm hilft mir nicht so viel, wie funktioniert den dieses Farbsystem?
Habe drei Farben und was sollen die einzelnen 9 Einträge bei jeder
Farbe.
Sind ja pro Farbe drei Tuple a 3 Werten?
Für was steht jeder einzelne Wert?
Will am Ende erreichen das ich von 0 bis 0.4 eine Farbskalierung hab,
von 0.4 bis 0.6 eine andere und wieder von 0.6 bis 1.0 eine andere.
Also will die Mitten und die minumas und maximas getrennt hervorheben?
Würde auch gerne dieses System verstehen was den ganzen zu Grunde liegt.
Also seh da echt nicht durch
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Hoi,

sorry, ich bin nicht eher zu einer Antwort gekommen:

Die Daten entsprechen einer Liste von x, y0 und y1-Werten zwischen denen die Farb-Lookup-Table (LUT) aufgespannt wird: Jeder Wert in der Liste entspricht einem Wert zwischen 0 und 1 (inklusive), wobei die 256 Werte im RGB-Farbraum einfach mittels Dreisatz umgesetzt werden (quasi "1 => 256", "0.5 => 128", usw.). Die zwei Werte für y sind dazu gut diskontinuierliche Abbildfunktionen zu erlauben. Hierbei entspricht y0 dem Wert von y für Werte von x<=y0 und y1 für Werte von x>y1. Die Liste muß mit x=0 beginnen und mit x=1 aufhören und alle Werte müssen in aufsteigender Reihenfolge gegeben werden. Die Werte zwischen gegebenen Punkte werden linear interpoliert.

Wie muß man nun diese Daten lesen?
x ist in dem Beispiel: array([ 0. , 0.5, 1. ])
y0 : array([ 0., 1., 1.])
y1 : array([ 0., 0.7, 1.])

Wie die LUT berechnet wird steht in makeMappingArray in colors.py Deines MPL-Downloads.

Was Du nun möchtest ist ein 3D-Lookup Table, d. h. Du mußt für alle drei Farben diese Tabelle angeben.

Das Datenformat ist zugegeben gewöhnungsbedürftig, aber vielleicht probierst Du einfach mal aus, was herauskommt, wenn Du eine andere Tabelle kreierst?

Gruß,
Christian
pythonnewbie
User
Beiträge: 5
Registriert: Dienstag 11. September 2007, 14:24

He vielen dank, hilft mir erstmal weiter
Aber hast schon recht dieses System ist echt verwirrend.
Werde mal versuchen ein wenig rumzuexperimentieren....
obwohl ich ja nicht so der Farbexperte bin;-(
Vielen Dank erstmal
Antworten