Einfachste Methode zur Erstellung eines gruppierten Balkendiagramms

Ich habe den folgenden Datenrahmen:

 Catergory        Reason Species
1   Decline       Genuine      24
2  Improved       Genuine      16
3  Improved Misclassified      85
4   Decline Misclassified      41
5   Decline     Taxonomic       2
6  Improved     Taxonomic       7
7   Decline       Unclear      41
8  Improved       Unclear     117

Ich versuche, ein gruppiertes Balkendiagramm zu erstellen, Art als Höhe und dann 2 Farben für Kategorie.

Ich würde ein Bild von dem, was ich habe, posten, aber ich habe nicht genug Reputationspunkte... aber hier ist mein Code:

Reasonstats<-read.csv("bothstats.csv")
Reasonstats2<-as.matrix(Reasonstats[,3])

barplot((Reasonstats2),beside=T,col=c("darkblue","red"),ylab="number of 
species",names.arg=Reasonstats$Reason, cex.names=0.8,las=2,space=c(0,100)
,ylim=c(0,120))
box(bty="l")

Nun, was ich möchte, ist, dass ich die beiden Balken nicht zweimal beschriften muss und sie auseinander gruppieren kann. Ich habe versucht, den Wert für den Abstand auf alle möglichen Dinge zu ändern, aber es scheint die Balken nicht auseinander zu bewegen. Kann mir jemand sagen, was ich falsch mache?

Keine "Balkenplot"-Lösung, sondern Verwendung von "Gitter" und "Balkendiagramm":

library(lattice)
barchart(Species~Reason,data=Reasonstats,groups=Catergory, 
         scales=list(x=list(rot=90,cex=0.8)))

Kommentare (1)

Es gibt mehrere Möglichkeiten, Plots in R zu erstellen; lattice ist eine davon, und immer eine vernünftige Lösung, +1 zu @agstudy. Wenn Sie dies in Base Graphics machen wollen, könnten Sie folgendes versuchen:


Reasonstats 
Kommentare (1)

Ich habe einen Funktionswrapper namens bar() für barplot() geschrieben, um das zu tun, was Sie hier versuchen, da ich ähnliche Dinge häufig tun muss. Der Github-Link zu dieser Funktion ist hier. Nachdem man sie kopiert und in R eingefügt hat, macht man

bar(dv = Species, 
    factors = c(Category, Reason), 
    dataframe = Reasonstats, 
    errbar = FALSE, 
    ylim=c(0, 140))  #I increased the upper y-limit to accommodate the legend. 

Der einzige Vorteil ist, dass die Funktion eine Legende mit den Namen der Stufen der kategorialen Variablen anlegt (z. B. "Rückgang" und "Verbesserung"). Wenn jede Ebene mehrere Beobachtungen hat, können auch die Fehlerbalken dargestellt werden (was hier nicht zutrifft, daher errbar=FALSE).

Kommentare (6)