PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programm zur Erstellung eines Heatmaps


MädBrain
2013-11-05, 21:01:59
Hallo zusammen, ich hab da ein kleines Anliegen, bei dem ich Hilfe bräuchte.
Ich hab eine 12*8 Matrix mit Zahlenwerten, ich würde gerne den einzelnen Werten eine Farbintensität zuordenen, sollte alles in einer Farbe sein, nur in Unterschiedlicher Intensität, denke Grauwerte wären da gut.

Ich hatte Zwar mal sowas wie C# gehabt und könnte mir dazu ein Konzept zur Umsetztung denken, das eigentliche Handwerk dazu besitzte ich leider nicht. Bin da auch nicht vom Fach.

Deswegen nach Frage ob es da ready to use Programme gibt ?

Godmode
2013-11-05, 21:02:47
Würde Matlab dafür empfehlen.

http://www.mathworks.de/de/help/bioinfo/ref/heatmap.html

Pinoccio
2013-11-05, 21:47:20
Würde Matlab dafür empfehlen.

http://www.mathworks.de/de/help/bioinfo/ref/heatmap.htmlJau, für 1k€+. :freak:


Wenn die Daten in einer Datei vorliegen und nur angezeigt werden sollen: gnuplot (http://gnuplot.sourceforge.net/demo/heatmaps.html).
Wenn vorher noch damit gerechnet werden soll: GNU Octave (http://www.gnu.org/software/octave/doc/interpreter/Displaying-Images.html#Displaying-Images).
Wenn es ganz kompliziert werden soll (z. B. als korrekte Projektion): gmt (http://gmt.soest.hawaii.edu/home).

mfg

MädBrain
2013-11-05, 21:51:12
Danke für den Tipp, aber Matlab muss ich aber erst haben, würde erst freie varianten ausprobieren, habe einen VB Code für Excel (http://bitesizebio.com/articles/how-to-create-a-heatmap-in-excel/) gefunden, nur weiß ich nicht, welche Zeile was für ein Befehl umsetzt, meine Matrix hat einen Zahlenbereich von 0-~6 mit ~2 relevanten Kommastellen. Könnte jemand mit VBasic Erfahrung kurz draufgucken und sagen wie ich es auf Graustufe und die gewünschte sensitivität umstelle?

Edith sagt danke Pinotschio. (y)

MädBrain
2013-11-05, 22:30:34
Gnuplot sieht gut aus, nur (wie immer) checke ich es nicht als nicht Benutzer von Kammandozeilen. :(

Ich hab hier eine Bespielmatrix:

0,000 0,000 0,000 0,000 0,000 0,000 0,196 0,145 0,000 0,000 0,000 0,000
0,000 0,000 1,023 0,791 0,000 0,000 1,002 0,733 0,000 0,000 0,000 0,000
0,000 0,000 1,058 0,993 1,010 0,988 1,090 0,792 0,000 0,118 0,084 0,107
1,415 1,155 0,000 0,000 1,477 1,536 0,000 0,000 0,000 0,385 0,307 0,292
0,000 0,000 0,000 0,000 0,000 0,000 0,000 0,030 0,000 0,764 0,858 0,654
0,000 0,000 0,000 0,000 0,000 0,000 0,000 0,000 0,000 1,610 1,438 1,283
0,000 0,000 0,378 0,460 0,000 0,000 0,787 0,589 0,000 2,530 2,297 2,104
0,028 0,000 0,000 0,000 0,024 0,035 0,000 0,000 0,000 5,246 4,925 4,503

wahlweise auch mit Komma statt Punkt.
wie setzte ich den im Beispielcode von Gnuplot ein, wleche Zeile bestimmt die Farbe ? :/
ich versteh auch das Beispielbild nicht, meinem verständniss nach, müsste die Farbe intensiver sein, je größer der Wert ist. Die einzelnen "x-y" Werte sind unabhängig voneinander.
(es ist ein Messergebnis einzelner Ereignisse, ich will mit der Heatmap sehen ob die Nachbarzellen einem Drift unterliegen)

littlejam
2013-11-05, 22:47:54
ich versteh auch das Beispielbild nicht, meinem verständniss nach, müsste die Farbe intensiver sein, je größer der Wert ist.
I.d.R. heißt es, je größer die Zahl desto heller.
FFFFFF -> Weiß
000000 -> Schwarz

Gruß

Mosher
2013-11-05, 23:17:51
ich versteh auch das Beispielbild nicht, meinem verständniss nach, müsste die Farbe intensiver sein, je größer der Wert ist. Die einzelnen "x-y" Werte sind unabhängig voneinander.
(es ist ein Messergebnis einzelner Ereignisse, ich will mit der Heatmap sehen ob die Nachbarzellen einem Drift unterliegen)


Im oberen Bild werden einfach der Reihe nach z-Werte (Wie die Höhe einer Geländekarte) übergeben.

Siehs dir an: 5, 4, 3, 1, 0 sind die z-Werte für y = 0, x= (0:4);
usw.

Beim unteren Bild werden die Koordinaten Tripel-weise übergeben:
z(x,y) = h;
z(0,0) = 5;
z(0,1) = 4;
usw;

Du müsstest deine Werte halt auf einen Bereich normieren und gut ist.

Achja: z bestimmt die Farbe.

Pinoccio
2013-11-05, 23:24:57
ich versteh auch das Beispielbild nicht, meinem verständniss nach, müsste die Farbe intensiver sein, je größer der Wert ist.Zelle 0,0 ist unten links.

Ich würde GNU Octave empfehlen, ist nicht ganz so Hardcore-Kommandozeile.
Dort liefe das dann so.

a=[0.000 0.000 0.000 0.000 0.000 0.000 0.196 0.145 0.000 0.000 0.000 0.000 0.000 0.000 1.023 0.791 0.000 0.000 1.002 0.733 0.000 0.000 0.000 0.000 0.000 0.000 1.058 0.993 1.010 0.988 1.090 0.792 0.000 0.118 0.084 0.107 1.415 1.155 0.000 0.000 1.477 1.536 0.000 0.000 0.000 0.385 0.307 0.292 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.030 0.000 0.764 0.858 0.654 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 1.610 1.438 1.283 0.000 0.000 0.378 0.460 0.000 0.000 0.787 0.589 0.000 2.530 2.297 2.104 0.028 0.000 0.000 0.000 0.024 0.035 0.000 0.000 0.000 5.246 4.925 4.503];

% Daten in rechteckige Form bringen, ließ sich schelcht mitkopieren
b=reshape(a,12,8);

% skalieren auf [0..255], kann sinnvoll sein oder nicht
b=b/max(max(b))*255;

% Datenmatrix als Bild darstellen
image(b)
% Skala dazu einblenden
colorbar

Kannst du online ausprobieren: octave online interpreter (http://www.cvberry.com/octave/). Ergebnis sieht dann so aus
http://abload.de/img/graph1383690124122liyll.jpg

Tagsüber verkaufe ich mein derartiges Wissen übrigens ... :smile:

mfg

Eggcake
2013-11-06, 00:19:15
Nice to know, kannte das bisher nur von Matlab. Scheinen ja die praktisch gleichen Befehle zu sein :D

Für mein Leben nach der Uni, falls ich das mal brauche... :)

Pinoccio
2013-11-06, 01:04:56
Nice to know, kannte das bisher nur von Matlab. Scheinen ja die praktisch gleichen Befehle zu sein :D

Für mein Leben nach der Uni, falls ich das mal brauche... :)Octaves erklärtes Ziel (bzw. eines) ist Matlab-Kompatibilität. Manchmal etwas schräg, weil auch Bugs nachprogrammiert werden. Aber fast alles, wa in Matlab geht, geht 1:1 auch so in Octave. Mir fehlt MATLAB garnicht.
Größtes Manko für Umsteiger ist das Fehlen der wirklich guten GUI von MATLAB. Insb. die interaktiven Figures sind recht praktisch. Geht aber in Octave auch alles, nur halt mit Textbefehlen statt der Maus.

mfg

twodoublethree
2013-11-06, 21:31:22
Das geht auch mit bedingter Formatierung einfach in Excel, über 2-Farben-Skala

Mosher
2013-11-06, 21:34:37
Octaves erklärtes Ziel (bzw. eines) ist Matlab-Kompatibilität. Manchmal etwas schräg, weil auch Bugs nachprogrammiert werden. Aber fast alles, wa in Matlab geht, geht 1:1 auch so in Octave. Mir fehlt MATLAB garnicht.
Größtes Manko für Umsteiger ist das Fehlen der wirklich guten GUI von MATLAB. Insb. die interaktiven Figures sind recht praktisch. Geht aber in Octave auch alles, nur halt mit Textbefehlen statt der Maus.

mfg

Ich bin auch ein großer Octave Fan geworden.
Bis ich herausgefunden habe, dass ich von zu Hause aus per Grafik Shell die Matlab-Lizenz meines Uni-Arbeitsplatzes benutzen kann ^^