Sie sind nicht angemeldet.

  • Anmelden

1

23.12.2009, 12:19

Datenvisualisierung - Methode gesucht (R/Gnuplot/irgendwas)

Moin,

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

Quellcode

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

23.12.2009, 12:35

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

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

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »kOa_Borgg« (23.12.2009, 12:36)


3

23.12.2009, 15:02

Ja, blos wie? Mit welcher Funktion? ;)

4

23.12.2009, 16:19

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

23.12.2009, 17:02

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

23.12.2009, 17:37

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?

7

23.12.2009, 19:40

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

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Imp_eleven« (23.12.2009, 19:41)


8

23.12.2009, 20:27

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.

9

21.01.2010, 12:18

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