You are not logged in.

  • Login

1

Wednesday, December 23rd 2009, 12:19pm

Datenvisualisierung - Methode gesucht (R/Gnuplot/irgendwas)

Moin,

ich habe einen zweidimensionalen Datensatz, vom Prinzip her so aussieht:

Source code

1
2
3
4
5
6
7
8
9
10
1  2  1  0  1
0  4  0  1  3
1  1  0  1  1
2  2  0  2  0
4  1  0  2  0
1  0  0  2  1
1  0  1  1  2
0  0  1  1  1
0  0  2  0  1
0  0  6  0  0

Ist natürlich nur ein pädagogisches Beispiel, in der Praxis sind es eher 20-50 Spalten und bis zu 1000 Zeilen.
Die wichtige Information steckt im Verlauf der Zahlenwerte innerhalb einer Spalte.
In den meisten Fällen, nehmen die Zahlenwerte bis zu einem bestimmten Punkt monoton zu, dann wieder ab. Muss aber nicht immer so sein.
Wenn ich nur eine Spalte hätte, würde ich ein ganz normales Histogramm plotten, kein Problem. Ich habe aber wie gesagt 20 bis 50. Wie visualisiert man sowas am besten?

Hatte mir pro Spalte einen vertikalen Balken vorgestellt, dessen Farbe an einer bestimmten Stelle, die darunter liegende Zahl angibt (je höher, umso heller/dunkler oder irgendsowas).
Aber wie macht man sowas? Kenne mich nicht allzu gut mit den Plot-Funktionen der Standardpakete aus.

2

Wednesday, December 23rd 2009, 12:35pm

Nicht nur hell dunkel nehmen. sondern regenbogenfarben. damit kriegst die peaks am besten visualisiert

edit: gnuplot ist ein wirklich feines tool für sowas

This post has been edited 1 times, last edit by "kOa_Borgg" (Dec 23rd 2009, 12:36pm)


3

Wednesday, December 23rd 2009, 3:02pm

Ja, blos wie? Mit welcher Funktion? ;)

Posts: 2,770

Location: Wallisellen

Occupation: CH

  • Send private message

4

Wednesday, December 23rd 2009, 4:19pm

was hast denn für programme zur verfügung?

hab so plots immer mit matlab gemacht. zb. mit "imagesc(x,y,A)". (A ist eine matrix mit deinen werten, und x,y sind die achsen)

5

Wednesday, December 23rd 2009, 5:02pm

Ja, matlab ist super, bzw. octave, aber ist ja fast dasselbe.

imagesc liefert schon in etwa das, was ich will... werde wohl noch etwas mit den Parametern rumspielen, mal gucken, ob ich das ganze auch in einer hübschen Variante hinbekomme.

Danke erstmal!

6

Wednesday, December 23rd 2009, 5:37pm

Okay, hab ein relativ gutes Resultat hinbekommen:


Jetzt steigen die Ansprüche. :)

Bei diesen Daten gibt es in jeder Spalte genau einen y-Wert aus der Menge {1,...,90}, der so etwas wie den "wahren" Wert darstellt.
Den würde ich gerne pro Spalte in den Plot mit einzeichnen, aber ohne eine einzige Intensität zu überschreiben.
Am Ende sollte man aus dem Plot dann sofort sehen, dass der "wahre Wert" (fast genau) dort liegt, wo die größte Intensität vorliegt (außer natürlich bei den verschmierten Spalten 13 und 18).

Hat jemand eine Idee, wie man das gut lösen kann?

Posts: 2,770

Location: Wallisellen

Occupation: CH

  • Send private message

7

Wednesday, December 23rd 2009, 7:40pm

hm
speicherst diese werte mal als vector ab. also v=(y1,y2,y3,usw) wobei y1 für den wert von kolonne 1 steht.

dann machst sowas in der art:

imagesc(A); % soweit bist jetzt schon
hold on;
plot(v,'xr'); % zeichnet an jedem punkt ein rotes kreuz


oder wenn "help plot" eintippst dann findest noch weitere optionen. da gibts tausende von möglichkeiten

This post has been edited 1 times, last edit by "Imp_eleven" (Dec 23rd 2009, 7:41pm)


8

Wednesday, December 23rd 2009, 8:27pm

Okay, danke... mal gucken, ob die Variante mit den Kreuzen o.ä. Symbolen irgendwie brauchbar gemacht werden kann... würde, wenn es geht, auf Farben generell verzichten, da man dann bei einem S/W-Ausdruck nix mehr erkennt.

Posts: 11,465

Location: Hamburg

Occupation: GER

  • Send private message

9

Thursday, January 21st 2010, 12:18pm

Sehe es gerade erst, brauchst du noch Anregungen?
Poste sowas doch im normalen Forum, wo ich es eher mitbekomme. :P