2016-04-16 10 views
0

Ich versuche, ein Diagramm mit mehreren Zeilen mit ggplot in R zu plotten. Dies sollte ziemlich einfach sein, aber ich kann nicht scheinen, erfolgreich zu sein.Plotten mehrerer Linien in ggplot, x-Achse wiederholt

Mein Datenrahmen ist wie folgt:

> head(PPP) 
     date  P  pp  HP 
1 28.07.2011 38.88 38.88000 40.824 
2 29.07.2011 39.14 39.14000 40.824 
3 01.08.2011 38.29 38.83005 40.824 
4 02.08.2011 39.07 39.07480 40.824 
5 03.08.2011 40.75 39.71282 40.824 
6 04.08.2011 38.40 38.94552 40.824 

ich diese Daten dann schmilzt die Schmelze() Funktion des Paket „reshape2“ mit:

> meltPPP<-melt(PPP,id="date") 

Die Ergebnisse sehen wie folgt aus (zu bemerkt, enthält die Spalte „Datum“ Wiederholungen nun der Werte):

> head(meltPPP) 
     date variable value 
1 28.07.2011  P 38.88 
2 29.07.2011  P 39.14 
3 01.08.2011  P 38.29 
4 02.08.2011  P 39.07 
5 03.08.2011  P 40.75 
6 04.08.2011  P 38.40 

Mein Ziel auf der x zu haben ist -Achse die Werte für "Datum" und auf der Y-Achse des Diagramms 3 Zeilen: "P", "pp" und "HP". Ich habe dann den folgenden Code zu versuchen, das Diagramm zu zeichnen:

> h<-ggplot(meltPPP,aes(date,value,group=variable,colour=variable)) 
> h+geom_line() 

Es scheint jedoch, dass R nicht versteht, dass die Werte in „Datum“ werden nicht wiederholt werden. Das Ergebnis ist:

enter image description here

Es scheint mir, dass die gleiche Grafik wiederholt und immer und immer wieder gequetscht. Dies liegt wahrscheinlich an der Tatsache, dass R nicht versteht, dass die "Datum" -Werte einzigartig sind.

Wie kann ich das beheben?

Vielen Dank im Voraus!

+0

Sie können das 'lubridate' Paket die Daten oder die in der Basis R konvertieren, können Sie' as.POSIXct' auf einen Typ zu konvertieren, die funktionieren sollte. Zum Beispiel könnten Sie ein Datum wie 'as.POSIXct (' 2016-04-04 12:34:56 ') 'oder'' lubridate' wie dieses 'library (lubridate)' und 'ymd_hms ('2016-04 -04 12:34:56 ') '. – steveb

+0

Beachten Sie, dass Ihre Daten in einem anderen Format vorliegen, wenn Sie 'lubridate' verwenden, müssen Sie möglicherweise die Funktion' dmy' verwenden. – steveb

Antwort

0

Basierend auf dem, was Sie bisher getan haben, können Sie unter Verwendung von lubridate und dplyr Folgendes tun. Wenn das nicht genau das ist, was Sie wollen, sollte es Ihnen nahe kommen.

library(dplyr) 
library(lubridate) 
library(ggplot2) 

PPP <- read.table(header=TRUE, stringsAsFactors = TRUE, text = 'date  P  pp  HP 
28.07.2011 38.88 38.88000 40.824 
29.07.2011 39.14 39.14000 40.824 
01.08.2011 38.29 38.83005 40.824 
02.08.2011 39.07 39.07480 40.824 
03.08.2011 40.75 39.71282 40.824 
04.08.2011 38.40 38.94552 40.824 
') 

PPP <- PPP %>% mutate(date = dmy(date)) 
meltPPP<-melt(PPP,id="date") 
h <- ggplot(meltPPP,aes(date,value,group=variable,colour=variable)) + 
    geom_line() 
h 

enter image description here

Verwandte Themen