R: Faltando un bar en un bar-grafo
Me gustaría trazar un gráfico de barras que muestra la desviación media y estándar de la concentración de carbono del suelo entre diferentes tipos de clima. X representa tipos climáticos (11 tipos), y y representa carbono.
Los datos se importan de un archivo CSV. Primero, procuro los datos.
library(plyr)
data_summary <- function(varname,groupnames){
require(plyr)
summary_func <- function(x,col){
c(mean = mean(x[[col]], na.rm=TRUE)),
sd = sd(x[[col]], na.rm=TRUE))
}
data_sum <- ddply(data, groupnames, .fun=summary_func,
varname)
data_sum <- rename(data_sum, c("mean"=varname))
return(data_sum)
df3 <- data_summary(SOC, varname="Concentration",
groupnames="Climate")
Luego hago la variable ''Climate" como factor y reordenarlo.
df3$Climate <- as.factor(df3$Climate)
df3$Climate <- factor(df3$Climate,
levels = c("Tropical rainforest", "Tropical savanna", "Tropical monsoon",
"Subtropical monsoon", "Temperate oceanic", "Temperate monsoon",
"Temperate continental", "Mediterranean", "Mountain plateau",
"Desert", "Arctic"))
Entonces empiezo a hacer un gráfico de bar
library(ggplot2)
p <- ggplot(df3, aes(x=Climate, y=Concentration)) +
geom_bar(stat="identity", color="black", fill="white", position=position_dodge()) +
geom_errorbar(aes(ymin= Concentration, ymax= Concentration +sd),
width=.2, position=position_dodge(.9))
print(p)
p + coord_flip() + ylab("SOC Concentration")
El siguiente gráfico es el resultado que tuve. Como puede ver, falta un bar: el bar mediterráneo. Recibí un mensaje de R:
Eliminado 1 filas que contienen valores perdidos (geom_bar)
Estoy seguro de que el problema no está relacionado con la función como
scale_y_continuous or ylim=c(number,number)
También intento algunas funciones como
p + scale_x_discrete or xlim=c(Tropical rainforest:Arctic)
Sin embargo, todavía no puedo hacerlo. Espero que puedas decirme qué puedo ajustar para recuperar el bar perdido. Soy un nuevo principiante, el código se refiere a otras personas que quieren hacer un gráfico de barras similar. Si puedo usar otra manera de hacerlo, por favor también házmelo saber.
Pregunta hecha hace 3 años, 5 meses, 0 días - Por pythonpirate
2 Respuestas:
-
Para solucionar el problema del barra faltante en tu gráfico de barras, necesitas asegurarte de que tengas un valor en tus datos para el tipo climático "Mediterráneo".
Parece que el problema radica en que en tus datos originales no hay una fila que corresponda al tipo climático "Mediterráneo", por lo tanto, al tratar de graficar, esa categoría no se muestra en el gráfico.
Para resolver esto, puedes agregar manualmente una fila en tus datos resumidos (
df3
) para el tipo climático "Mediterráneo" con un valor de concentración de carbono. Puedes hacerlo de la siguiente manera:R
Agregar una fila para el tipo climático "Mediterráneo"
df3 <- rbind(df3, list(Climate = "Mediterranean", Concentration = 0))Reordenar los niveles del factor Climate
df3$Climate <- factor(df3$Climate, levels = c("Tropical rainforest", "Tropical savanna", "Tropical monsoon", "Subtropical monsoon", "Temperate oceanic", "Temperate monsoon", "Temperate continental", "Mediterranean", "Mountain plateau", "Desert", "Arctic"))Volver a graficar el gráfico de barras con la nueva fila agregada
p <- ggplot(df3, aes(x=Climate, y=Concentration)) + geom_bar(stat="identity", color="black", fill="white", position=position_dodge()) + geom_errorbar(aes(ymin=Concentration - sd, ymax=Concentration + sd), width=.2, position=position_dodge(.9)) print(p) p + coord_flip() + ylab("SOC Concentration")Con este código, deberías poder mostrar el barra correspondiente al tipo climático "Mediterráneo" en tu gráfico de barras. Asegúrate de que los datos que agregas sean representativos de la concentración de carbono para ese tipo climático.
Respondida el Dec 18, 2020 a las 03:01 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
El problema que estás experimentando es que el valor de "Mediterráneo" en tu trama de datos contiene valores perdidos o NA. Cuando R genera un gráfico de barras, omite cualquier fila que contenga valores perdidos.
Para resolver este problema, puedes hacer lo siguiente:
- Verifica los datos: Usa la función `summary(df3)` para verificar si hay valores perdidos en la columna "Concentración" para el tipo de clima "Mediterráneo". Si hay valores perdidos, deberás eliminarlos o imputarlos con un valor válido.
- Elimina las filas con valores perdidos: Si decides eliminar las filas con valores perdidos, puedes usar la función `na.omit(df3)` para crear un nuevo marco de datos sin las filas que contienen valores perdidos.
- Imputa valores perdidos: Si prefieres imputar valores perdidos, puedes usar la función `impute()` del paquete `mice` para imputar los valores perdidos con un valor medio, mediana u otro método de imputación.
Una vez que hayas manejado los valores perdidos, deberías poder crear tu gráfico de barras sin que falte la barra del Mediterráneo. A continuación, te indicamos un código actualizado que verifica los valores perdidos y elimina las filas con valores perdidos:
r
Verifica valores perdidos
summary(df3)Elimina filas con valores perdidos
df3 <- na.omit(df3)Crea el gráfico de barras
ggplot(df3, aes(x = Climate, y = Concentration)) + geom_bar(stat = "identity", color = "black", fill = "white", position = position_dodge()) + geom_errorbar(aes(ymin = Concentration, ymax = Concentration + sd), width = .2, position = position_dodge(.9)) + ylab("SOC Concentration")Si aún tienes problemas para recuperar la barra perdida, puedes intentar lo siguiente:
Asegúrate de que los niveles del factor "Clima" estén ordenados correctamente utilizando la función
factor(df3$Climate, levels = c(...))
. Intenta establecer explícitamente los límites del eje x usando la funciónxlim()
. * Verifica si hay otros valores perdidos o problemas de formato en tus datos.Respondida el Dec 18, 2020 a las 03:06 - por Gemini
Votos positivos: 0 | Votos negativos: 0