2016-07-27 14 views
0

Meine Frage könnte elementar sein, aber es hat eine Menge Kopfschmerzen seit den letzten Stunden gegeben, so würde jede Hilfe sehr geschätzt werden.Zeichnen Sie eine andere Zeile für jede Zeile eines Datenrahmens in R

Ich habe einen Datenrahmen mit ~ 150 Spalten und ~ 1000 Reihen. Jede [i, j] -Zelle des Datenrahmens enthält einen numerischen Wert, abgesehen von den Werten in der ersten Spalte des Datenrahmens, die eine eindeutige ID enthalten (einzigartig für jede Zeile des Datenrahmens).

Ich möchte Zeichnen eines Diagramms, in dem jede Zeile des Datenrahmens auf einem separaten Diagramm (Plot) dargestellt wird (dh für jede Zeile wird ein Plot mit einer eigenen Achse erstellt, wobei die Werte der Zeile auf dem y- Achse und die Spaltennamen des Datenrahmens als Label auf der x-Achse). Dann wird jedes dieser einzelnen Diagramme unter dem vorherigen positioniert.

Zum Beispiel, wenn wir den Datenrahmen übernehmen ist die folgende:

Jan = c(2, 3, 5) 
Feb = c(8, 9, 12) 
Mar = c(2.2, 7, 3) 
Apr= c(1, 3.7, 23) 
df = data.frame(Jan, Feb, Mar, Apr) 

dann wäre mein Ziel 3 Plots untereinander zu haben, die jeweils eine Linie durch 4 Punkte geht enthält, zu den Werten entsprechen, von jedem der 4 Monate (Jan, Feb, Mar, Apr). Zum Beispiel hätte der erste Plot eine Linie, die von den Werten [2, Jan], [8, Feb], [2.2, Mar] und [1.0, Apr] ausgeht. Ähnlich für die nächsten zwei Plots.

Kann mir jemand die richtige Richtung mit einigen Hinweisen zeigen, wie ich meine Ziele erreichen kann?

Vielen Dank!

+0

obwohl 'plot' jedes Mal ein neues Grundstück instanziiert es genannt wird, wenn Sie anrufen' segment' es auf einem Liniensegment hinzuzufügen. oder Sie können 'Punkte' mit der Variablen x aufrufen und finden die Einstellung zum Verbinden der Punkte – Adam

Antwort

2

Hier ist eine Lösung mit melt aus dem reshape2 Paket in Ihrem Beispiel.
Es kann schwieriger sein, 1000 + Facetten (Zeilen) und 150 + X-Ticks (Spalten) zu haben.

enter image description here

df = cbind(df, row_number = seq(1, 3)) 

df_melt = melt(df, id = "row_number") 

ggplot(df_melt, aes(x = variable, y = value, group = row_number)) + 
geom_line(stat = "identity") + facet_wrap(~row_number, ncol = 1, scales = "free") 
+0

Brilliant Solution bVa! Vielen Dank für Ihre großartige Hilfe! Du hast es total genagelt! – dimly