multiple - Agregue color a la gráfica de caja-Error "Valor continuo proporcionado a la balanza discreta"
multiple boxplots in r (1)
En primer lugar, proporcionar datos de muestra ayudaría. Como no lo hiciste, aquí hay algunos:
MYdata <- data.frame(Age = rep(c(0,1,3,6,9,12), each=20),
Richness = rnorm(120, 10000, 2500))
Las partes 1 y 2 provienen del mismo problema. Age
es una variable continua, pero está intentando usarla en una escala discreta (especificando el color para valores específicos de edad). En general, una escala mapea la variable a lo visual; para una edad continua, hay un color correspondiente para cada valor de edad posible, no solo los que aparecen en sus datos. Sin embargo, puede tratar simultáneamente la edad como una variable categórica (factor) para algunas de las características estéticas. Para la tercera parte de su pregunta, dentro de la descripción de la balanza, puede definir etiquetas específicas correspondientes a pausas específicas en la escala. Poniendo todo esto junto (y agregando algo para darle el eje x etiquetado más como lo que tiene en el ejemplo):
ggplot(data = MYdata, aes(x = Age, y = Richness)) +
geom_boxplot(aes(fill=factor(Age))) +
geom_point(aes(color = factor(Age))) +
scale_x_continuous(breaks = c(0, 1, 3, 6, 9, 12)) +
scale_colour_manual(breaks = c("0", "1", "3", "6", "9", "12"),
labels = c("0 month", "1 month", "3 months",
"6 months", "9 months", "12 months"),
values = c("#E69F00", "#56B4E9", "#009E73",
"#F0E442", "#0072B2", "#D55E00")) +
scale_fill_manual(breaks = c("0", "1", "3", "6", "9", "12"),
labels = c("0 month", "1 month", "3 months",
"6 months", "9 months", "12 months"),
values = c("#E69F00", "#56B4E9", "#009E73",
"#F0E442", "#0072B2", "#D55E00"))
Con este esquema de color, los puntos que se encuentran dentro del diagrama de caja no son visibles (ya que son del mismo color que el del cuadro de box). Tal vez dejar el hueco de la caja y dibujar sus líneas en el color sería mejor.
ggplot(data = MYdata, aes(x = Age, y = Richness)) +
geom_boxplot(aes(colour=factor(Age)), fill=NA) +
geom_point(aes(color = factor(Age))) +
scale_x_continuous(breaks = c(0, 1, 3, 6, 9, 12)) +
scale_colour_manual(breaks = c("0", "1", "3", "6", "9", "12"),
labels = c("0 month", "1 month", "3 months",
"6 months", "9 months", "12 months"),
values = c("#E69F00", "#56B4E9", "#009E73",
"#F0E442", "#0072B2", "#D55E00"))
Finalmente, considere si realmente necesita colorear cada edad de manera diferente, ya que ya están bien definidas por el eje x.
Probablemente haya una solución muy fácil para mi problema, pero no pude encontrar una respuesta satisfactoria en línea.
Usando el siguiente comando, pude crear el siguiente gráfico de diagrama de caja y superponerlo con los puntos de datos individuales:
ggplot(data = MYdata, aes(x = Age, y = Richness)) +
geom_boxplot(aes(group=Age)) +
geom_point(aes(color = Age))
Hay varias cosas que me gustaría agregar / cambiar:
1. Cambia el color de línea y / o el relleno de cada diagrama de caja (dependiendo de "Edad") usando 6 colores diferentes de izquierda a derecha:
c("#E69F00", "#56B4E9", "#009E73", "#F0E442", "#0072B2", "#D55E00")
Lo intenté
ggplot(data = MYdata, aes(Age, Richness)) +
geom_boxplot(aes(group=Age)) +
scale_colour_manual(values = c("#E69F00", "#56B4E9", "#009E73",
"#F0E442", "#0072B2", "#D55E00"))
pero da como resultado un error de "Continuous value supplied to discrete scale"
.
2. Cambie el color de cada punto de datos (según "Edad") usando 6 colores diferentes de izquierda a derecha:
c("#E69F00", "#56B4E9", "#009E73", "#F0E442", "#0072B2", "#D55E00")
Lo intenté:
ggplot(data = MYdata, aes(Age, Richness)) +
geom_boxplot(aes(group=Age)) +
geom_point(aes(color = Age)) +
scale_colour_manual(values = c("#E69F00", "#56B4E9", "#009E73",
"#F0E442", "#0072B2", "#D55E00"))
pero también resulta en un error:
Valor continuo suministrado a escala discreta
3. Cambie el texto en la leyenda a "0 mes", "1 mes", "3 meses", "6 meses", "9 meses", "12 meses"