R ggplot2条等效于R基础图

时间:2017-05-10 12:26:32

标签: r plot ggplot2

我有以下数据集,我使用'ggplot2'生成堆积条形图。

数据 - >

    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代码--->

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

我想现在使用R的 barplot()函数将其转换为R基本图,以便我可以在其他地方使用它。我无法使用基本条形图功能生成堆积条形图,我必须使用单列但是2组进行堆叠。

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

也许这可以帮到你

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

结果如下:

enter image description here

为了将图例添加到图表之外,您可能需要将par()中的xpd选项从FALSE更改为TRUE:

par(xpd=TRUE)

希望它有所帮助。