2016-04-16 15 views
0

Rでggplotを使用して複数行のグラフをプロットしようとしています。これはかなり簡単ですが、成功するとは思えません。次のように複数の行をggplotにプロットすると、x軸が繰り返される

マイデータフレームである:

> 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 

私は、パッケージ「reshape2」のメルト()関数を使用してこのデータを溶かす:次のように

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

結果が(に見えます「日付」列に値の繰り返しが含まれていることに注意してください)。

> 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 

私の目標はx -axは "日付"の値で、チャートの3つの線: "P"、 "pp"、 "HP"のy軸上の値です。私はその後、チャートをプロットしようとする次のコードを使用します。

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

しかし、Rは、「日付」の値が繰り返されるようにされていないことを理解していないようです。結果は次のとおりです。

enter image description here

同じチャートを繰り返し、何度も何度も圧迫されるように私には思えます。これはおそらく、Rが "日付"の値が一意であることを理解していないという事実によるものです。

どうすればこの問題を解決できますか?

ありがとうございます!

+0

あなたが動作するはずの型に変換するには、 'as.POSIXct'を使用することができ、日付またはベースRに変換するために' lubridate'パッケージを使用することができます。例えば、 'as.POSIXct( '2016-04-04 12:34:56')'のように日付を変換するか、 ''ライブラリ(lubridate) ''とymd_hms( '2016-04 -04 12:34:56 ') '。 – steveb

+0

あなたの日付は異なった形式です、 'lubridate'を使うときに' dmy'関数を使う必要があるかもしれません。 – steveb

答えて

0

あなたがこれまで行ってきたことに基づいて、lubridatedplyrを使って、次のようなことができます。これがまさにあなたが望むものでないならば、それはあなたを近づけるはずです。

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

関連する問題