So erstellen Sie ein Balkendiagramm, in dem Balken in R nebeneinander liegen


9

Ich möchte ein Bardiagramm für diese Daten in R erstellen (aus einer CVS-Datei lesen):

Experiment_Name MetricA MetricB Just_X 2 10 Just_X_and_Y 3 20

um das folgende Diagramm zu haben:

Alt-Text

Ich bin Anfänger und weiß nicht einmal, wie ich anfangen soll.


1
Barplot Lesen der Hilfedatei ist manchmal schneller als das Posten in einem Forum ...
RockScience

Sie müssen zuerst herausfinden, dass Barplots mit der Barplot-Funktion erstellt werden ... das ist nicht so einfach, wenn Sie das nicht wissen.

Dies gibt keine Antwort auf die Frage. Um einen Autor zu kritisieren oder um Klarstellung zu bitten, hinterlassen Sie einen Kommentar unter seinem Beitrag.
kjetil b halvorsen

Antworten:


13

Ich gehe davon aus, dass Sie Ihre Daten in R mit read.table()oder mit den Kurzhandfunktionen importieren read.csv()können. Anschließend können Sie beliebige Zusammenfassungsfunktionen anwenden, z. B. tableoder meanwie folgt:

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

oder

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

Die Idee ist, eine Matrix oder Tabelle für die Zusammenfassungswerte zu erhalten, die Sie anzeigen möchten.

Schauen Sie sich für die grafische Ausgabe die barplot()Funktion mit der Option an beside=TRUE, z

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

Das spaceArgument kann verwendet werden, um einen zusätzlichen Abstand zwischen nebeneinander angeordneten Balken hinzuzufügen.

Alt-Text


13

Hier ggplot Version:

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

Alt-Text


2
Ich hoffe, es macht Ihnen nichts aus, aber ich habe die Ausgabe Ihrer Befehle hinzugefügt.
Csgillespie

@csgillespie kein Problem :)
Teucer

1

Ich wollte die Antwort von teucer aktualisieren, um reshape2 widerzuspiegeln.

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

Beachten Sie, dass die Antwort von teucer den Fehler "Fehler in eval (Ausdruck, Umgebung, Beilage): Objekt 'Metrik' nicht gefunden" mit reshape2 erzeugt, da reshape2 variable.name anstelle von variable_name verwendet.

Ich fand auch, dass ich stat = "identity" zur Funktion geom_bar hinzufügen musste, da es sonst "Fehler: Zuordnen einer Variablen zu y und auch Verwenden von stat =" bin "gab.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.