本篇主要想复现文章中的一张图,原图来源(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),使其恢复到最开始的状态。

好了,本次就到这里。

R语言barplot ,掌握本篇的内容,基本的条形图都可以画了的更多相关文章

  1. R语言学习 第四篇:函数和流程控制

    变量用于临时存储数据,而函数用于操作数据,实现代码的重复使用.在R中,函数只是另一种数据类型的变量,可以被分配,操作,甚至把函数作为参数传递给其他函数.分支控制和循环控制,和通用编程语言的风格很相似, ...

  2. R语言学习 第八篇:常用的数据处理函数

    Basic包是R语言预装的开发包,包含了常用的数据处理函数,可以对数据进行简单地清理和转换,也可以在使用其他转换函数之前,对数据进行预处理,必须熟练掌握常用的数据处理函数,本文分享在数据处理时,经常使 ...

  3. R语言学习 第十篇:操作符

    运算符是R语言中最基础的存在,熟悉运算符的使用,是熟练使用R处理数据的基础,操作符,顾名思义,是对数据进行运算的符号,R有自己的一套操作符,实现变量的赋值,引用,运算等功能. 一,赋值符号 为变量赋值 ...

  4. R语言学习 第十一篇:日期和时间

    R语言的基础包中提供了三种基本类型用于处理日期和时间,Date用于处理日期,它不包括时间和时区信息:POSIXct/POSIXlt用于处理日期和时间,其中包括了日期.时间和时区信息.R内部在存储日期和 ...

  5. R语言学习 第五篇:字符串操作

    文本数据存储在字符向量中,字符向量的每个元素都是字符串,而非单独的字符.在R中,可以使用双引号,或单引号表示字符. 一,字符串中的字符数量 函数nchar()用于获得字符串中的字符数量: > s ...

  6. R语言学习 第七篇:列表

    列表(List)是R中最复杂的数据类型,一般来说,列表是数据对象的有序集合,但是,列表的各个元素(item)的数据类型可以不同,每个元素的长度可以不同,是R中最灵活的数据类型.列表项可以是列表类型,因 ...

  7. R语言学习 第三篇:数据框

    数据框(data.frame)是最常用的数据结构,用于存储二维表(即关系表)的数据,每一列存储的数据类型必须相同,不同数据列的数据类型可以相同,也可以不同,但是每列的行数(长度)必须相同.数据框的每列 ...

  8. R语言barplot绘图函数

    barplot 函数用于绘制柱状图,下面对其常用的参数进行一个详细的解释: 1)height : 高度,通过这个参数可以指定要画多少个柱子以及每个柱子的高度,其值有两种格式, 第一种 :向量 vect ...

  9. R语言学习 第十篇:包

    包(Package)是实现特定功能的.预先写好的代码库(library),通俗地说,包是含有函数.数据等的功能模块.R拥有大量的软件包,许多包都是由某一领域的专家编写的,但并不是所有的包都有很高的质量 ...

随机推荐

  1. 【Azure Redis 缓存】如何得知Azure Redis服务有更新行为?

    问题描述 Azure Redis作为微软云提供的一种PaaS服务,由于PaaS的特性,服务端的安装和维护.修补.升级等操作均由平台放负责.虽然最终用户只需要关注当前服务的使用,但是后台的升级和补丁行为 ...

  2. WPF 之命令(七)

    一.前言 ​ 事件的作用是发布和传播一些消息,消息送达接收者,事件的使命也就完成了,至于消息响应者如何处理发送来的消息并不做规定,每个接收者可以使用自己的行为来响应事件.即事件不具有约束力. ​ 命令 ...

  3. constexpr 的来龙去脉

    constexpr 是什么? 关键字 constexpr (constant expression) 是在 C++11 中引入的,并且在 C++14 中进行了优化. constexpr 和 const ...

  4. Redis 管理命令

    INFO 命令 # 查看redis相关信息 127.0.0.1:6379> info # 服务端信息 # Server # 版本号 redis_version:3.2.12 # redis版本控 ...

  5. Kubernets二进制安装(15)之安装部署coredns

    在运维主机上(mfyxw50.mfyxw.com)准备Coredns镜像文件,以docker镜像文件的方式部署到Kubernetes集群中去. 1.下载coredns镜像 [root@mfyxw50 ...

  6. VS2010下创建MVC4项目注意事项

    1.安装VS SP1. 2.安装NuGet Package Manager. (1)打开VS2010,进入"工具--扩展管理器". (2)点击"联机库",等待搜 ...

  7. 涂颜色的RPG问题

    长度为n的方格,刷3种颜色的颜料,相邻的方格颜料颜色不能相同,且首尾方格颜色不能相同.每个方格必须涂色.计算一共有多少种涂色方式. 解题思路:(1)f(1)=3,f(2)=6,f(3)=6 (2)如果 ...

  8. git config [section] solutions

    git config [section] solutions fix git [section] warnings global config $ vim ~/.gitconfig [user] em ...

  9. HTML5 drag & drop & H5 DnD

    HTML5 drag & drop H5 DnD https://html5demos.com/ demos https://html5demos.com/dnd-upload https:/ ...

  10. Error: Cannot find module 'koa-router'

    Error: Cannot find module 'koa-router' koa-router !== koa-route # install OK $ yarn add koa-router h ...