Sie sind nicht angemeldet.

  • Anmelden

Lieber Besucher, herzlich willkommen bei: MastersForum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier 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