2017-05-10 9 views
2

Ich habe folgenden Datensatz, für den ich mit 'ggplot2' ein gestapeltes Balkendiagramm erstellt habe.R ggplot2 Balkenäquivalent in R Basisplot

Daten ->

X1 X2 X3 
1 1 10 13.53 
2 1 10 16.81 
3 2 10 16.24 
4 2 10 17.42 
5 1 10 15.20 
6 1 10 29.40 
7 1 10 45.30 
8 1 10 14.00 
9 1 10 23.50 
10 2 10 12.30 

ggplot2 Code --->

ggplot(data=dat1, aes(x=X2, y=X3, fill=X1,width=0.5)) + 
    geom_bar(stat="identity") + coord_flip() + 
    theme(legend.position="bottom",legend.direction="horizontal",legend.text=element_text(size=12), 
     plot.margin=unit(c(0.1,1,0.25,1), "cm"), 
     panel.grid.major = element_blank(), panel.grid.minor = element_blank(),axis.title.y=element_blank(), 
     axis.text.y=element_blank(), 
     axis.ticks.y=element_blank())+ 
    guides(fill=guide_legend(nrow=1,byrow=TRUE)) + 
    scale_x_continuous(breaks = 10)+ 
    scale_y_continuous(breaks=c(seq(0,sum(dat1$X3),50),sum(dat1$X3)),expand = c(0,0))+ 
    labs(fill="") 

Ich möchte jetzt es in R Grundstück umwandeln mit BarPlot() Funktion von R, so dass ich kann es woanders verwenden. Ich kann das gestapelte Balkendiagramm nicht mit der Basis-Barplot-Funktion erzeugen, die ich mit einer einzigen Spalte, aber zwei Gruppen stapeln muss.

Danke für die Hilfe.

+0

Warum können Sie den ggplot barplot nicht woanders verwenden? – user3640617

+0

@ user3640617: Ich muss mit einem anderen R-Plot (Zeitreihe) kombinieren, mit dem ich Probleme beim Kombinieren habe. Als Alternative wollte ich beides im R-Basis-Diagramm machen. –

Antwort

2

vielleicht kann dies helfen Ihnen

X1=c(1,1,2,2,1,1,1,1,1,2) 
X2=rep(10,10) 
X3=c(13.53,16.81,16.24,17.42,15.20,29.40,45.30,14.00,23.50,12.30) 

my.color<-rev(c("#4292C6","#08306B")) 

# this is the important thing, to pass your data into barplot as a matrix 
dat1<-as.matrix(X3,X2) 

barplot(dat1,col = my.color[as.factor(X1)],border = my.color[as.factor(X1)], 
     beside = FALSE,horiz=TRUE, 
     xaxt="n",yaxt="n",xlab="",ylab="",main="") 

axis(1, at=seq(0,sum(X3),by=50)) 
axis(2, at=0.7,labels = 10) 
legend(0,1.4, fill=my.color, legend=c(1, 2))  

Das Ergebnis ist folgendes:

enter image description here

Um die Legende aus dem Grundstück hinzuzufügen vielleicht haben Sie die xpd Option ändern müssen in Par() von FALSE nach TRUE:

par(xpd=TRUE) 

Hoffe es hilft.

+0

Vielen Dank .. das hilft mir .. –