Eric
2012-Sep-23 14:18 UTC
[R-es] Grafico de medias con barra de desviacion para varias series de datos
Estimada comunidad, tengo el siguiente problema: Estoy haciendo un experimento de toxicidad de solventes para microalgas, por ahora tengo los datos de un solvente en 5 diferentes concentraciones y un control, cada unidad experimental tiene 3 repeticiones, y necesito graficar las curvas de crecimiento del cultivo de algas. Tendria 6 curvas de crecimiento. Puse los datos en la tabla que adjunto como archivo .csv. La primera columna corresponde a los dias de crecimiento del alga y deberia ir en el eje X, la segunda columna indica la repeticion, la tercera columna indica el tipo de solvente usado ss=sin solvente y lim=limoneno, la columna con indica la concentracion del solvente y va de 1 a 5, la columna ABS es la medicion que se hizo e indica la absorbancia de la muestra. He intentado con PlotMeans y lattice pero no logro obtener el grafico que deseo. Es como si fuera necesario fundir esos dos paquetes para obtener loque necesito, ya que PlotMeans me permite graficar las medias con las barras de desviacion, pero no permite (al menos no he encontrado como) clasificar o diferenciar las concentraciones, por su lado con lattice puedo diferenciar las concentraciones pero no puedo graficar el promedio con las barras de desviacion (al menos no se como hacerlo) ... este es mi problema, alguna sugerencia ?? Un abrazo a todos y gracias por su tiempo. Eric. -- Nota: las tildes se han omitido para evitar conflictos con algunos lectores de correo. Frases notables: * SATYÂT NÂSTI PARO DHARMAH (No hay religion mas elevada que la verdad) * La oscuridad no se combate, se ilumina ... * Un economista es un experto que sabrá mañana por qué las cosas que predijo ayer no han sucedido hoy (Laurence Peter). ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120923/7edbf997/attachment.html> ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: curvadecrecimientobraunii2.csv Type: text/csv Size: 1220 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120923/7edbf997/attachment.bin>
Carlos Ortega
2012-Sep-24 09:12 UTC
[R-es] Grafico de medias con barra de desviacion para varias series de datos
Hola, Gracias por aportar el conjunto de datos con los que poder probar. ¿Tienes el código que has hecho en lattice ?. De esta forma es más fácil que tener que probar con varias opciones de modelos que tengan las variables que quieres monitorizar. En el mientras tanto como alternativa podrías mirar: - la función xYplot() del paquete Hmisc. - el utilizar la opción de incluir una capa (layer) sobre tu gráfico lattice donde incluyas las medias y las desvicaciones. Aquí tendrás que usar el paquete latticeExtra y varias de sus funciones: layer(), panel.abelineq() Saludos, Carlos Ortega www.qualityexcellence.es El 23 de septiembre de 2012 16:18, Eric <ericconchamunoz@gmail.com>escribió:> Estimada comunidad, tengo el siguiente problema: > > Estoy haciendo un experimento de toxicidad de solventes para microalgas, > por ahora tengo los datos de un solvente en 5 diferentes concentraciones y > un control, cada unidad experimental tiene 3 repeticiones, y necesito > graficar las curvas de crecimiento del cultivo de algas. Tendria 6 curvas > de crecimiento. Puse los datos en la tabla que adjunto como archivo .csv. > La primera columna corresponde a los dias de crecimiento del alga y deberia > ir en el eje X, la segunda columna indica la repeticion, la tercera columna > indica el tipo de solvente usado ss=sin solvente y lim=limoneno, la columna > con indica la concentracion del solvente y va de 1 a 5, la columna ABS es > la medicion que se hizo e indica la absorbancia de la muestra. > > He intentado con PlotMeans y lattice pero no logro obtener el grafico que > deseo. Es como si fuera necesario fundir esos dos paquetes para obtener > loque necesito, ya que PlotMeans me permite graficar las medias con las > barras de desviacion, pero no permite (al menos no he encontrado como) > clasificar o diferenciar las concentraciones, por su lado con lattice puedo > diferenciar las concentraciones pero no puedo graficar el promedio con las > barras de desviacion (al menos no se como hacerlo) ... este es mi problema, > alguna sugerencia ?? > > Un abrazo a todos y gracias por su tiempo. > > Eric. > > > > > > > -- > Nota: las tildes se han omitido para evitar conflictos con algunos > lectores de correo. > > Frases notables: > * SATYÂT NÂSTI PARO DHARMAH (No hay religion mas elevada que la verdad) > * La oscuridad no se combate, se ilumina ... > * Un economista es un experto que sabrá mañana por qué las cosas que > predijo > ayer no han sucedido hoy (Laurence Peter). > > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >-- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]
Argel Gastélum Arellánez
2012-Sep-24 17:38 UTC
[R-es] Grafico de medias con barra de desviacion para varias series de datos
El 23/09/12 09:18, Eric escribió:> Estimada comunidad, tengo el siguiente problema: > > Estoy haciendo un experimento de toxicidad de solventes para > microalgas, por ahora tengo los datos de un solvente en 5 diferentes > concentraciones y un control, cada unidad experimental tiene 3 > repeticiones, y necesito graficar las curvas de crecimiento del > cultivo de algas. Tendria 6 curvas de crecimiento. Puse los datos en > la tabla que adjunto como archivo .csv. La primera columna corresponde > a los dias de crecimiento del alga y deberia ir en el eje X, la > segunda columna indica la repeticion, la tercera columna indica el > tipo de solvente usado ss=sin solvente y lim=limoneno, la columna con > indica la concentracion del solvente y va de 1 a 5, la columna ABS es > la medicion que se hizo e indica la absorbancia de la muestra. > > He intentado con PlotMeans y lattice pero no logro obtener el grafico > que deseo. Es como si fuera necesario fundir esos dos paquetes para > obtener loque necesito, ya que PlotMeans me permite graficar las > medias con las barras de desviacion, pero no permite (al menos no he > encontrado como) clasificar o diferenciar las concentraciones, por su > lado con lattice puedo diferenciar las concentraciones pero no puedo > graficar el promedio con las barras de desviacion (al menos no se como > hacerlo) ... este es mi problema, alguna sugerencia ?? > > Un abrazo a todos y gracias por su tiempo. > > Eric.Hola Eric, ¿tal vez algo como esto es lo que necesitas?. Es un poco largo y a mano, seguramente hay paquetes que lo hacen de forma mucho más simplificada, espero te sirva... Saludos! #------------------------------------------------------------------------------- # Crecimiento de algas, efecto de solventes. DATOS <- read.table("curvadecrecimientobraunii2.csv", header=T, sep="\t") DATOS class(DATOS$dia) class(DATOS$con) DATOS$con <- factor(DATOS$con) class(DATOS$con) class(DATOS$Abs) #------------------------------------------------------------------------------- # FUNCIÓN PARA CALCULAR MEDIAS Y DESVIACIONES ESTÁNDAR: x.s <- function(respuesta = "", factor = "", datos, nombre.experimento = "Nombre No Definido", nombre.respuesta = "Nombre No Definido", nombre.factor = "Nombre No Definido"){ # Esta función calcula las "medias" y las "desviaciones estándar" de una "variable de respuesta" para cada nivel de una "variable explicativa" o "factor", mostrando los resultados en forma de una tabla. # Preparar el marco de datos: RESPUESTA <- datos[respuesta] FACTOR <- datos[factor] MARCO.DE.DATOS <- data.frame(FACTOR, RESPUESTA) attributes(MARCO.DE.DATOS)$names <- c("FACTOR", "RESPUESTA") cat("\n \n \n \n") # Calcular las medias de la respuesta para cada nivel del factor. medias <- c() for(i in 1:length(levels(MARCO.DE.DATOS$FACTOR))){ medias <- c(medias, mean(MARCO.DE.DATOS$RESPUESTA[MARCO.DE.DATOS$FACTOR == (levels(MARCO.DE.DATOS$FACTOR)[i])])) } # Calcular las desviaciones estándar de la respuesta # para cada nivel del factor. desv.est <- c() for(i in 1:length(levels(MARCO.DE.DATOS$FACTOR))){ desv.est <- c(desv.est, sd(MARCO.DE.DATOS$RESPUESTA[MARCO.DE.DATOS$FACTOR == (levels(MARCO.DE.DATOS$FACTOR)[i])])) } # Generar la tabla de datos: tabla <- data.frame(medias, desv.est) attributes(tabla)$row.names <- levels(MARCO.DE.DATOS$FACTOR) attributes(tabla)$names <- c("Media", "Desviación estándar") # Para que se muestre en consola el resultado, independientemente de que se asigne el resultado a un objeto: cat("\n ESTADÍSTICA DESCRIPTIVA \n", "\n EXPERIMENTO:", nombre.experimento, "\n RESPUESTA:", nombre.respuesta, "\n FACTOR:", nombre.factor, "\n", "\n") print(tabla) # Para poder asignar el resultado a un objeto determinado: return(list(TITULO = "ESTADÍSTICA DESCRIPTIVA", EXPERIMENTO = nombre.experimento, RESPUESTA = nombre.respuesta, FACTOR = nombre.factor, TABLA = tabla)) } #------------------------------------------------------------------------------- # Subset de datos para con = 0: DATOS.indices.NO_con0 <- which(DATOS$con != c("0")) DATOS.indices.NO_con0 DATOS.con0 <- DATOS[-DATOS.indices.NO_con0, ] DATOS.con0 DATOS.con0$con <- factor(DATOS.con0$con) DATOS.con0 # Verificando el tipo de dato para cada columna: class(DATOS.con0) class(DATOS.con0$dia) DATOS.con0$dia <- factor(DATOS.con0$dia) class(DATOS.con0$dia) class(DATOS.con0$con) class(DATOS.con0$Abs) DESCRIPTIVA.con0 <- x.s(respuesta = "Abs", factor = "dia", datos = DATOS.con0, nombre.experimento = "Solventes y crecimiento, con = 0", nombre.respuesta = "Absorbancia", nombre.factor = "Tiempo (días)") TABLA.con0 <- DESCRIPTIVA.con0$TABLA TABLA.con0 #------------------------------------------------------------------------------- # Subset de datos para con = 1: DATOS.indices.NO_con1 <- which(DATOS$con != c("1")) DATOS.indices.NO_con1 DATOS.con1 <- DATOS[-DATOS.indices.NO_con1, ] DATOS.con1 DATOS.con1$con <- factor(DATOS.con1$con) DATOS.con1 # Verificando el tipo de dato para cada columna: class(DATOS.con1) class(DATOS.con1$dia) DATOS.con1$dia <- factor(DATOS.con1$dia) class(DATOS.con1$dia) class(DATOS.con1$con) class(DATOS.con1$Abs) DESCRIPTIVA.con1 <- x.s(respuesta = "Abs", factor = "dia", datos = DATOS.con1, nombre.experimento = "Solventes y crecimiento, con = 1", nombre.respuesta = "Absorbancia", nombre.factor = "Tiempo (días)") TABLA.con1 <- DESCRIPTIVA.con1$TABLA TABLA.con1 #------------------------------------------------------------------------------- # Para graficar las barras de error con "errbar" library(sfsmisc) par(mar = c(5, 4, 2, 2) + 0.2) # Modifica los márgenes: c(bottom, left, top, right), los valores por default son c(5, 4, 4, 2). par(las=1) # Orientación de los números en los ejes: 0: always parallel to the axis [default], 1: always horizontal, 2: always perpendicular to the axis, 3: always vertical. plot(as.numeric(attributes(TABLA.con0)$row.names), TABLA.con0$Media, axes = T, ylim = c(0, 250), xlab = list("Tiempo (días)", cex = 1.2, col = "black", font = 2), ylab = list("Abs", cex = 1.2, col = "black", font = 2), type = "n", col = "black", main = "Crecimiento vs tiempo", xlim = c(0, 5), lwd = 2) par(new=T) # Para graficar la nueva gráfica sobre la misma gráfica anterior. errbar(as.numeric(attributes(TABLA.con0)$row.names), TABLA.con0$Media, yplus = TABLA.con0$Media + TABLA.con0[, 2], yminus = TABLA.con0$Media - TABLA.con0[, 2], axes = F, ylim = c(0, 250), xlab = "", ylab = "", type = "l", col = "black", main = "", xlim = c(0, 5), lwd = 2, lty = 1) points(as.numeric(attributes(TABLA.con0)$row.names), TABLA.con0$Media, cex = 1.2, pch = 21, col = "black", bg = "black") par(new=T) # Para graficar la nueva gráfica sobre la misma gráfica anterior. par(fg="blue") errbar(as.numeric(attributes(TABLA.con1)$row.names), TABLA.con1$Media, yplus = TABLA.con1$Media + TABLA.con1[, 2], yminus = TABLA.con1$Media - TABLA.con1[, 2], axes = F, ylim = c(0, 250), xlab = "", ylab = "", type = "l", col = "blue", main = "", xlim = c(0, 5), lwd = 2, lty = 2) points(as.numeric(attributes(TABLA.con1)$row.names), TABLA.con1$Media, cex = 1.2, pch = 21, col = "blue", bg = "blue") #------------------------------------------------------------------------------- legend( "bottomright", # Posición en la gráfica. legend = c( # Leyendas a colocar. "con = 0", "con = 1" ), bty = "n", # Con borde "o", sin borde "n". col = c("black", "blue"), # Color de línea y de borde de símbolo. lty = c(1, 2), # Tipo de línea. lwd = c(2, 2), # Grosor de línea. pch = c(21, 21), # Tipo de símbolo. pt.bg = c("black", "blue") # Color de relleno del símbolo. ) #-------------------------------------------------------------------------------
Eric
2012-Sep-27 01:15 UTC
[R-es] Grafico de medias con barra de desviacion para varias series de datos
Hola Carlos, este es el codigo que tengo para lattice y me produce el grafico que adjunto, adjunto tb un nuevo archivo de datos, ya que he medido un poco mas y se va agregando informacion ... estoy leyendo la ayuda de xYplot {Hmisc} para agregar las barras de dispersion y reemplazar el conjunto de datos de cada punto en X por su correspondiente promedio. En la imagen adjunta, primero se agruparon los datos por tipo de solvente: ss=sin solvente (q es un control), lim=limoneno, dec=decanol, dentro de cada grafico los datos estan agrupados por concentracion desde 1 a 5, cada color representa una concentracion distinta, en el eje X se presenta la cantidad de dias que se cultiva la microalga y en el eje Y se muestra la absorbancia asociada. el codigo: library(lattice) setwd("/home/neo/Dropbox/Tesis/4tesis/2.objesp/experimento/cultivo") curcre <- read.table("curvadecrecimientobraunii2.csv", header=TRUE,sep="\t",dec=".",as.is=FALSE,na.strings = "NA",skip=0) xyplot(curcre[,6]~curcre[,2]|factor(solv),groups=con,data=curcre,xlab="dias",ylab="Abs") savePlot(filename = "grafico",type ="png",device = dev.cur()) Saludos, eric. 2012/9/24 Carlos Ortega <cof en qualityexcellence.es>> Hola, > > Gracias por aportar el conjunto de datos con los que poder probar. > ¿Tienes el código que has hecho en lattice ?. De esta forma es más fácil > que tener que probar con varias opciones de modelos que tengan las > variables que quieres monitorizar. > > En el mientras tanto como alternativa podrías mirar: > > - la función xYplot() del paquete Hmisc. > - el utilizar la opción de incluir una capa (layer) sobre tu gráfico > lattice donde incluyas las medias y las desvicaciones. Aquí tendrás que > usar el paquete latticeExtra y varias de sus funciones: layer(), > panel.abelineq() > > > Saludos, > Carlos Ortega > www.qualityexcellence.es > > El 23 de septiembre de 2012 16:18, Eric <ericconchamunoz en gmail.com>escribió: > >> Estimada comunidad, tengo el siguiente problema: >> >> Estoy haciendo un experimento de toxicidad de solventes para microalgas, >> por ahora tengo los datos de un solvente en 5 diferentes concentraciones y >> un control, cada unidad experimental tiene 3 repeticiones, y necesito >> graficar las curvas de crecimiento del cultivo de algas. Tendria 6 curvas >> de crecimiento. Puse los datos en la tabla que adjunto como archivo .csv. >> La primera columna corresponde a los dias de crecimiento del alga y deberia >> ir en el eje X, la segunda columna indica la repeticion, la tercera columna >> indica el tipo de solvente usado ss=sin solvente y lim=limoneno, la columna >> con indica la concentracion del solvente y va de 1 a 5, la columna ABS es >> la medicion que se hizo e indica la absorbancia de la muestra. >> >> He intentado con PlotMeans y lattice pero no logro obtener el grafico >> que deseo. Es como si fuera necesario fundir esos dos paquetes para obtener >> loque necesito, ya que PlotMeans me permite graficar las medias con las >> barras de desviacion, pero no permite (al menos no he encontrado como) >> clasificar o diferenciar las concentraciones, por su lado con lattice puedo >> diferenciar las concentraciones pero no puedo graficar el promedio con las >> barras de desviacion (al menos no se como hacerlo) ... este es mi problema, >> alguna sugerencia ?? >> >> Un abrazo a todos y gracias por su tiempo. >> >> Eric. >> >> >> >> >> >> >> -- >> Nota: las tildes se han omitido para evitar conflictos con algunos >> lectores de correo. >> >> Frases notables: >> * SATYÂT NÂSTI PARO DHARMAH (No hay religion mas elevada que la verdad) >> * La oscuridad no se combate, se ilumina ... >> * Un economista es un experto que sabrá mañana por qué las cosas que >> predijo >> ayer no han sucedido hoy (Laurence Peter). >> >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es en r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> >> > > > -- > Saludos, > Carlos Ortega > www.qualityexcellence.es >-- Nota: las tildes se han omitido para evitar conflictos con algunos lectores de correo. Frases notables: * SATYÂT NÂSTI PARO DHARMAH (No hay religion mas elevada que la verdad) * La oscuridad no se combate, se ilumina ... * Un economista es un experto que sabrá mañana por qué las cosas que predijo ayer no han sucedido hoy (Laurence Peter). ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120927/ec670cd0/attachment-0001.html> ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: grafico Type: application/octet-stream Size: 31566 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120927/ec670cd0/attachment-0001.obj> ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: curvadecrecimientobraunii2.csv Type: text/csv Size: 4346 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20120927/ec670cd0/attachment-0001.bin>