varias studio lineas leyendas hacer graficos graficas como r plot boxplot

studio - Cuadro de caja en R que muestra la media



plot en r (5)

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)

¿Alguien sabe de una forma de generar un diagrama de caja en R con una línea (u otro símbolo) en el valor correspondiente a la media?

¡Gracias!


En base a 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 publicación para más detalles)

Si desea agregar puntos a los gráficos de cajas horizontales, consulte this publicación.


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 retornos, todo lo que necesitas es una línea de código para obtener todos los diagramas de caja 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)

Matriz de retorno

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

Diagrama de caja de la matriz de retorno

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 el mean.symbol y eliminar o cambiar el median.symbol. Espero que haya ayudado. :)



abline(h=mean(x))

para una línea horizontal (use v en lugar de h para la vertical si orienta su casilla de cuadro horizontalmente), o

points(mean(x))

por 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 estos 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 sus datos contienen valores perdidos, es posible que desee reemplazar el último argumento de la función de tapply con la function(x) mean(x,na.rm=T)