2016-03-23 8 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, у меня будет идентификатор строки или дата. enter image description here

+0

Итак, какова ваша временная колонка? – InfiniteFlashChess

+0

Это объект зоопарка, поэтому имена строк - это даты. –

+0

Да, это должно быть ближе к тому, к чему вы стремитесь, неуверенный, как работать над этим в ggplot, но dygraphs хорош. 'библиотека (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

Я не буду возражать против более простого способа сделать это, если есть какие-либо идеи.

 Смежные вопросы

  • Нет связанных вопросов^_^