Come creare un diagramma a barre in cui le barre sono affiancate in R


9

Voglio creare un bardiagramma per questi dati in R (letto da un file CVS):

Experiment_Name MetricA MetricB Just_X 2 10 Just_X_and_Y 3 20

per avere il seguente diagramma:

testo alternativo

Sono principiante e non so nemmeno come iniziare.


1
? barplot che legge il file di aiuto a volte è più veloce della pubblicazione su un forum ...
RockScience

Devi prima capire che i grafici a barre sono creati dalla funzione di grafici a barre ... questo non è così facile quando non lo sai.

Questo non fornisce una risposta alla domanda. Per criticare o richiedere chiarimenti a un autore, lascia un commento sotto il suo post.
kjetil b halvorsen,

Risposte:


13

Presumo che tu sia in grado di importare i tuoi dati in R con read.table()o con le read.csv()funzioni di scelta rapida . Quindi è possibile applicare tutte le funzioni di riepilogo desiderate, ad esempio tableo mean, come di seguito:

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

o

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

L'idea è di finire con una matrice o una tabella per i valori di riepilogo che si desidera visualizzare.

Per l'output grafico, guarda la barplot()funzione con l'opzione beside=TRUE, ad es

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")

L' spaceargomento può essere utilizzato per aggiungere uno spazio aggiuntivo tra le barre giustapposte.

testo alternativo


13

Ecco la versione di 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")

testo alternativo


2
Spero non ti dispiaccia, ma ho aggiunto l'output dei tuoi comandi.
csgillespie,

@csgillespie no problem :)
teucer

1

Volevo aggiornare la risposta di teucer per riflettere 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")

Si noti che la risposta di teucer produce l'errore "Errore in eval (expr, envir, enclos): oggetto" metrica "non trovato" con reshape2 perché reshape2 usa variabile.name invece di variabile_name.

Ho anche scoperto che dovevo aggiungere stat = "identità" alla funzione geom_bar perché altrimenti forniva "Errore: mappatura di una variabile su y e utilizzo anche stat =" bin "."

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.