2010-03-22 19 views

Respuesta

35
abline(h=mean(x)) 

para una línea horizontal (v uso en lugar de h para los verticales Si orienta su gráfico de caja horizontal), o

points(mean(x)) 

para un punto. Use el parámetro pch para cambiar el símbolo. Es posible que desee colorearlos para mejorar la visibilidad también.

Tenga en cuenta que se invocan después de dibujar el diagrama de caja.

Si está utilizando la interfaz de fórmulas, debería construir el vector de medias. Por ejemplo, tomando el primer ejemplo de ?boxplot:

boxplot(count ~ spray, data = InsectSprays, col = "lightgray") 
means <- tapply(InsectSprays$count,InsectSprays$spray,mean) 
points(means,col="red",pch=18) 

Si los datos contienen valores que faltan, es posible que desee reemplazar el último argumento de la función tapply con function(x) mean(x,na.rm=T)

+0

¿Podría explicar cómo se puede hacer esto en el primer ejemplo de la ayuda de boxplot {graphics}, por ejemplo? boxplot (count ~ spray, data = InsectSprays, col = "lightgray") – Brani

+0

Lo he agregado a la respuesta como un ejemplo ahora – James

8

Con ggplot2:

p<-qplot(spray,count,data=InsectSprays,geom='boxplot') 
p<-p+stat_summary(fun.y=mean,shape=1,col='red',geom='point') 
print(p) 
0

Basado en las respuestas de @James y @Jyotirmoy Bhattacharya, se me ocurrió esta solución:

zx <- replicate (5, rnorm(50)) 
zx_means <- (colMeans(zx, na.rm = TRUE)) 
boxplot(zx, horizontal = FALSE, outline = FALSE) 
points(zx_means, pch = 22, col = "darkgrey", lwd = 7) 

(Ver this posterior para más detalles)

Si desea añadir puntos a diagramas de cajas horizontales, consulte this puesto.

0

También creo que chart.Boxplot es la mejor opción, te da la posición de la media, pero si tienes una matriz con devuelve, todo lo que necesitas es una línea de código para obtener todas las cajas en un gráfico.

Aquí hay un pequeño ejemplo de cartera de ETF.

library(zoo) 
library(PerformanceAnalytics) 
library(tseries) 
library(xts) 

VTI.prices = get.hist.quote(instrument = "VTI", start= "2007-03-01", end="2013-03-01", 
         quote = c("AdjClose"),provider = "yahoo",origin ="1970-01-01", 
         compression = "m", retclass = c("zoo")) 

VEU.prices = get.hist.quote(instrument = "VEU", start= "2007-03-01", end="2013-03-01", 
         quote = c("AdjClose"),provider = "yahoo",origin ="1970-01-01", 
         compression = "m", retclass = c("zoo")) 

VWO.prices = get.hist.quote(instrument = "VWO", start= "2007-03-01", end="2013-03-01", 
         quote = c("AdjClose"),provider = "yahoo",origin ="1970-01-01", 
         compression = "m", retclass = c("zoo")) 


VNQ.prices = get.hist.quote(instrument = "VNQ", start= "2007-03-01", end="2013-03-01", 
         quote = c("AdjClose"),provider = "yahoo",origin ="1970-01-01", 
         compression = "m", retclass = c("zoo")) 

TLT.prices = get.hist.quote(instrument = "TLT", start= "2007-03-01", end="2013-03-01", 
         quote = c("AdjClose"),provider = "yahoo",origin ="1970-01-01", 
         compression = "m", retclass = c("zoo")) 

TIP.prices = get.hist.quote(instrument = "TIP", start= "2007-03-01", end="2013-03-01", 
         quote = c("AdjClose"),provider = "yahoo",origin ="1970-01-01", 
         compression = "m", retclass = c("zoo")) 

index(VTI.prices) = as.yearmon(index(VTI.prices)) 
index(VEU.prices) = as.yearmon(index(VEU.prices)) 
index(VWO.prices) = as.yearmon(index(VWO.prices)) 

index(VNQ.prices) = as.yearmon(index(VNQ.prices)) 
index(TLT.prices) = as.yearmon(index(TLT.prices)) 
index(TIP.prices) = as.yearmon(index(TIP.prices)) 

Prices.z=merge(VTI.prices, VEU.prices, VWO.prices, VNQ.prices, 
      TLT.prices, TIP.prices) 

colnames(Prices.z) = c("VTI", "VEU", "VWO" , "VNQ", "TLT", "TIP") 

returnscc.z = diff(log(Prices.z)) 

start(returnscc.z) 
end(returnscc.z) 
colnames(returnscc.z) 
head(returnscc.z) 

Volver Matrix

ret.mat = coredata(returnscc.z) 
class(ret.mat) 
colnames(ret.mat) 
head(ret.mat) 

Diagrama de cajas de Retorno Matrix

chart.Boxplot(returnscc.z, names=T, horizontal=TRUE, colorset="darkgreen", as.Tufte =F, 
      mean.symbol = 20, median.symbol="|", main="Return Distributions Comparison", 
      element.color = "darkgray", outlier.symbol = 20, 
      xlab="Continuously Compounded Returns", sort.ascending=F) 

puede intentar cambiar la mean.symbol, y quitar o cambiar el median.symbol. Espero que haya sido de ayuda. :)

Cuestiones relacionadas