Cómo crear un diagrama de diagrama de barras donde las barras están una al lado de la otra en R


9

Quiero crear un bardiagrama para estos datos en R (leer de un archivo CVS):

Nombre del experimento MetricA MetricB Just_X 2 10 Just_X_and_Y 3 20

tener el siguiente diagrama:

texto alternativo

Soy principiante y ni siquiera sé cómo empezar.


1
El diagrama de barras que lee el archivo de ayuda a veces es más rápido que publicarlo en un foro ...
RockScience

Primero debe descubrir que los gráficos de barras están hechos por la función de gráfico de barras ... esto no es tan fácil cuando no lo sabe.

Esto no proporciona una respuesta a la pregunta. Para criticar o solicitar una aclaración de un autor, deje un comentario debajo de su publicación.
kjetil b halvorsen

Respuestas:


13

Supongo que puede importar sus datos en R con read.table()o con las read.csv()funciones abreviadas . Luego puede aplicar cualquier función de resumen que desee, por ejemplo tableomean , como se muestra a continuación:

x <- replicate(4, rnorm(100))
apply(x, 2, mean)

o

x <- replicate(2, sample(letters[1:2], 100, rep=T))
apply(x, 2, table)

La idea es terminar con una matriz o tabla para los valores de resumen que desea mostrar.

Para la salida gráfica, mire la barplot()función con la opción beside=TRUE, por ej.

barplot(matrix(c(5,3,8,9),nr=2), beside=T, 
        col=c("aquamarine3","coral"), 
        names.arg=LETTERS[1:2])
legend("topleft", c("A","B"), pch=15, 
       col=c("aquamarine3","coral"), 
       bty="n")

El spaceargumento se puede usar para agregar un espacio adicional entre las barras yuxtapuestas.

texto alternativo


13

Aquí la versión de ggplot:

library(ggplot2)
df = melt(data.frame(A=c(2, 10), B=c(3, 20), 
          experiment=c("X", "X & Y")),
          variable_name="metric")

ggplot(df, aes(experiment, value, fill=metric)) + 
       geom_bar(position="dodge")

texto alternativo


2
Espero que no te importe, pero agregué la salida de tus comandos.
csgillespie

@csgillespie no hay problema :)
teucer

1

Quería actualizar la respuesta de teucer para reflejar reshape2.

library(ggplot2)
library(reshape2)
df = melt(data.frame(A=c(2, 10), B=c(3, 20), 
                 experiment=c("X", "X & Y")),
      variable.name="metric")

ggplot(df, aes(experiment, value, fill=metric)) + 
  geom_bar(position="dodge",stat="identity")

Tenga en cuenta que la respuesta del teucer produce el error "Error en eval (expr, envir, enclos): objeto 'métrico' no encontrado" con reshape2 porque reshape2 usa variable.name en lugar de variable_name.

También descubrí que necesitaba agregar stat = "identity" a la función geom_bar porque, de lo contrario, daba "Error: asignar una variable a y y también usar stat =" bin ".

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.