-3

我有一个矩阵,想要绘制四分位数范围的垂直误差条,并从矩阵中按列表示平均值。请问我如何在 R 尤其是 ggplot2 中做到这一点?下面给出了一个示例矩阵:

 ##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 错误栏。这是我试图实现的结果示例'但是,我将拥有行 ID 或日期,而不是 x 轴上的城镇。 在此处输入图像描述

4

1 回答 1

3

我不得不走很长的路,所以这就是我所做的(使用 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())  

这是连接每个月平均值的时间序列线的结果: 在此处输入图像描述

如果有任何想法,我不会介意更简单的方法。

于 2016-03-24T00:48:34.207 回答