2016-03-23 54 views
-3

私は行列を持ち、四分位範囲の垂直誤差バーと行列からの列平均をプロットしたい。 Rの中でどうすればいいのですか?特にggplot2してください。サンプル行列は以下の通りです:行列内に四分位範囲の平均と垂直のエラーバーを持つプロット時系列R

##Create matrix 
B = matrix (c(2,4,3,1,5,7,5,3,8,3,7,3),nrow=4,ncol=3) 
##Create zoo object 
B2<-as.zoo(B) 
colnames(B2)<- c("A","B","C") 

B2 
      A B C 
      2 5 8 
      4 7 3 
      3 5 7 
      1 3 3 
##The Dates for the columns: 
Date<-as.yearmon (seq(as.Date("2000/1/1"), by = "month", length.out = 3)) 

私は時系列プロットを望んでいますが、各タイムスタンプに対して行ベースの垂直IQRエラーバーが必要です。ここに私が達成しようとしている成果のサンプルがあります。しかし、x軸に町を持つのではなく、行のIDまたは日付を取得します。 enter image description here

+0

あなたの時間ベースの列は何ですか? – InfiniteFlashChess

+0

これは動物園のオブジェクトなので、行の名前は日付です。 –

+0

ええ、これはあなたが目指しているものに近づくはずです、ggplotではこれについてどのように作業するのか不明ですが、グラフはうまくいきます。 'ライブラリ(XTS)' 'ライブラリ(dygraphs)' 'ts_object < - as.xts(B2)' 'dygraph(ts_object)' 私はエラーバーをプロットする方法が全くわからないんです。 ggplot2でエラーバーをプロットするにはgeom_vlineを見てください – InfiniteFlashChess

答えて

0

私はここにこれと長い道のりのラウンドを行っていた(25%および75%パーセンタイルを使用して)私がやったことだ:

##Create matrix 
B = matrix (c(2,4,3,1,5,7,5,3,8,3,7,3),nrow=4,ncol=3) 
##Create dataframe 
B2<-as.data.frame(B) 
colnames(B2)<- c("A","B","C") 
##Create date sequence 
##To compute quantile by row 
D<-apply(B2,2,quantile) 
##Select 1st and 3rd quartile (25% and 75%) and transpose to make them columns. 
D2<-t(D[c(2,4),]) 
##Mean 
CO<-apply(B2,2,mean) 
DM<-as.data.frame(cbind(D2,CO)) 
##Create dates 
Date<-as.character(as.yearmon (seq(as.Date("2000/1/1"), by = "month", length.out = 3))) 
##Add to dataframe 
DM$Date<-Date 
colnames(DM)<-c("Q1","Q3","CO","Date") 

##Plot using ggplot2 
library(ggplot2) 
ggplot(DM, aes(x=Date, y=CO,group=1,colour="CO")) + 
geom_errorbar(aes(ymin=Q1, ymax=Q3), width=.1) + 
    geom_point(size=3) + 
geom_line(aes()) 

ここでは平均値を結ぶ時系列ラインでの結果です毎月: enter image description here

アイデアがあれば、これを行う簡単な方法はありません。

関連する問題