• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

R语言barplot ,掌握本篇的内容,基本的条形图都可以画了

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本篇主要想复现文章中的一张图,原图来源(Antibiotic resistome and its association with bacterial communities during sewage sludge composting);

首先来分析一下张图,个人认为至少需要两个图层叠加,

1.堆积条形图和x轴,左y轴,堆积条形图的图例是一个图层;

2.点线图和点线图的图例,右y轴是一个图层;

当然,你还可以拆分,比如图例也是单独图层添加,完全没有问题,但是那样就麻烦了,需要考虑布局,绘图区域大小等问题;

我们没有跟文献中的图一模一样,没有仔细阅读文章,不清楚绘图的数据是否在文章中都提供了,自己造数据吧,最终绘图结果如下:

 

 

图的意思呢,每个柱子代表每次模拟考试成绩的分值,用堆积条形图来展示,上方的点线图是代表每次模拟考试数学成绩所占的百分比。

好了,先模拟数据;

mypar <- par(no.readonly = T)# 保存par的默认参数
set.seed(200) #设定随机数

library(RColorBrewer) #加载颜色面板
mycol<- brewer.pal(7,"Set1")#存储颜色

数学 <- round(runif(7,50,100),3)
语文 <- round(runif(7,50,100),3)
英语 <- round(runif(7,10,100),3)
生物 <- round(runif(7,70,100),3)
物理 <- round(runif(7,60,100),3)
地理 <- round(runif(7,80,100),3)
历史 <- round(runif(7,50,100),3)

myframe <- data.frame(数学,语文,英语,生物,物理,地理,历史)
mymatrix <- t(as.matrix(myframe))

mysum <- apply(mymatrix, 2, sum) #每次模拟总成绩
ratio_shuexue <- mymatrix[1,]/mysum #每次模拟数学所占比例
moni <- c("模拟1","模拟2","模拟3","模拟4","模拟5","模拟6","模拟7")

 

第一个图层:

par(mar=c(5,4,6,5)) #设置绘图区域边界
mybar <- barplot(mymatrix,col=mycol[1:7],space = 0.5,axes = F,names.arg = moni,cex.names = .8,xlim = c(0,11),ylim = c(0,800)) #绘制条形图
  
par(xpd=T) #确保绘图区域外部能添加元素
legend(1,900,legend = colnames(myframe),fill = mycol[1:7],border = F,ncol = 7,cex=.8,x.intersp = .2,y.intersp = .5,text.font = 1,bty = "n",text.width = .3)#添加图例
  
axis(side = 2,at = seq(0,800,400),cex.axis=.8,line = -2)#添加左坐标轴

  

 其中par 中mar参数需要个人根据后续要添加的点线图不断尝试(这个在每个人的电脑上展示的图片效果可能不一样,代码可以照搬,但要修改一些布局参数)。

 

添加第二个图层;

par(new=T) #添加新图层
par(mar=c(3.5,4,6,4)) #设置绘图边界
plot(mybar,ratio_shuexue,type="b",axes=F,ann=F,xlim = c(0,11),ylim = c(0,0.18),col='black',lwd=2,pch=19)#添加点线图
axis(side = 4,at = seq(0,0.18,0.02),cex.axis=.8,line = -3)#添加右坐标轴
legend(0.1,0.15,legend = "数学比例",col="black",bty="n",pch=19,x.intersp = .3,lty=1,lwd=2)#添加图例
mtext("分数",side = 2,font = 2,cex=1)#添加坐标轴标题
mtext("百分比",side = 4,font = 2,cex=1)
  
par(mypar)#恢复默认绘图参数

运行完这部分代码就能得到一开始的那张图了,par参数在rstudio里面设置一次就会一直生效,除非关闭再打开,所以代码最后设置par(mypar),使其恢复到最开始的状态。

好了,本次就到这里。

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap