Comment créer un diagramme à barres où les barres sont côte à côte dans R

9

Je veux créer un bardiagramme pour ces données en R (lu à partir d'un fichier CVS):

Experiment_Name MetricA MetricB Just_X 2 10 Just_X_and_Y 3 20

d'avoir le schéma suivant:

texte alternatif

Je suis débutant et je ne sais même pas par où commencer.

Skarab
la source
1
? barplot lire le fichier d'aide est parfois plus rapide que de poster sur un forum ...
RockScience
Vous devez d'abord comprendre que les diagrammes à barres sont créés par la fonction de diagrammes à barres ... ce n'est pas si facile quand vous ne le savez pas.
Cela ne fournit pas de réponse à la question. Pour critiquer ou demander des éclaircissements à un auteur, laissez un commentaire sous son article.
kjetil b halvorsen

Réponses:

13

Je suppose que vous pouvez importer vos données dans R avec read.table()ou les fonctions raccourcies read.csv(). Ensuite, vous pouvez appliquer toutes les fonctions récapitulatives que vous souhaitez, par exemple tableou mean, comme ci-dessous:

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

ou

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

L'idée est de se retrouver avec une matrice ou un tableau pour les valeurs récapitulatives que vous souhaitez afficher.

Pour la sortie graphique, regardez la barplot()fonction avec l'option beside=TRUE, par exemple

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' spaceargument peut être utilisé pour ajouter un espace supplémentaire entre les barres juxtaposées.

texte alternatif

chl
la source
13

Voici la version 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")

texte alternatif

teucer
la source
2
J'espère que cela ne vous dérange pas, mais j'ai ajouté la sortie de vos commandes.
csgillespie
@csgillespie aucun problème :)
teucer
1

Je voulais mettre à jour la réponse de teucer pour refléter 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")

Notez que la réponse de teucer produit l'erreur "Erreur dans eval (expr, envir, enclos): objet 'métrique' introuvable" avec reshape2 car reshape2 utilise variable.name au lieu de variable_name.

J'ai également constaté que je devais ajouter stat = "identity" à la fonction geom_bar car sinon cela donnait "Erreur: mappage d'une variable à y et également en utilisant stat =" bin "."

Colin D
la source