2017-06-10 15 views
1

ich verschiedene Bar Plots nebeneinander dargestellt werden soll, aber ich bekomme die folgende Fehlermeldung:Plotten barplots nebeneinander mit mehreren Datenrahmen

„Fehler in Achse (if (horiz) 2 sonst 1, bei = at.l, Etikett = names.arg, lty = axis.lty,: formales Argument "at" durch mehr tatsächlichen Argumente“matched

Wie kann ich dieses Problem lösen

Hier die Daten für dieses Beispiel? :

structure(c(2L, 9L, 1L), .Dim = c(3L, 1L), .Dimnames = list(c("Positiv.26", 
    "Negativ.26", "Keine.26"), NULL)) 

structure(c(11L, 17L, 11L), .Dim = c(3L, 1L), .Dimnames = list(
     c("Positiv.45", "Negativ.45", "Keine.45"), NULL)) 

structure(c(17L, 15L, 7L), .Dim = c(3L, 1L), .Dimnames = list(
       c("Positiv.85", "Negativ.85", "Keine.85"), NULL)) 

Das habe ich bisher;

barplot((Histo.26[1:3,]), ylim= c(0,20), xlim = c(0,10), col=c("red","lightblue","gray"), 
     beside = T, xaxt="n") 

barplot((Histo.45[1:3,]), at =c(4,5,6), col=c("red","lightblue","gray"), 
     xaxt="n", add=TRUE) 

barplot((Histo.85[1:3,]), at =c(7,8,9), col=c("red","lightblue","gray"), 
     xaxt="n", add=TRUE) 


axis(1, at = c(2,5,8), labels = c("Group1","Group2","Group3") , tick=FALSE , cex=0.3) 

Antwort

1

Gibt es einen Grund Sie nicht Ihre Daten in einer einzigen Liste kombiniert:

L <- as.vector(rbind(Histo.26,Histo.45,Histo.85)[,1]) 
[1] 2 9 1 11 17 11 17 15 7 

Dann mit der Achse Plotten:

barplot(L, ylim = c(0,20), col=c("red","lightblue","gray"), xaxt="n") 
axis(1, at = c(2,5,8), labels = c("Group1","Group2","Group3") ,tick=FALSE, cex=0.3) 

Ich habe at in axis ändern c(2, 5.5, 9), damit es funktioniert. Dies wäre die Ausgabe;

 

         https://i.stack.imgur.com/csckS.png 

1

Es gibt verschiedene Ansätze in Richtung auf diese und ich möchte eine neue mit dem data.table Paket setDT und melt präsentieren eine data.frame Ihrer Datensätze kombiniert zu machen;

df1 <- cbind(Histo.85,Histo.45,Histo.26) 
df1 <- data.frame(df1) 

library(data.table) 
setDT(df1, keep.rownames = TRUE)[] 
colnames(df1) <- c("rn","85","45","26") 

df2 <- melt(df1, id.vars='rn') 

library(ggplot2) 
ggplot(df2, aes(x=rn, y=value, fill=variable)) + 
    geom_bar(stat='identity', position='dodge') 

Dies wäre die Handlung:

                                                                    bar plot

Verwandte Themen