R语言学习实战——解决边际分布图
目录
0 R语言概述
1 本次实战简介
2 涉及的工具包
2.1 ggplot2简介
2.2 ggExtra简介
2.3 ggpointdensity简介
3 开始画图
3.1 安装并载入
3.2 导入数据
3.3 二维散点核密度图
3.4 修改横纵坐标轴和坐标轴名称
3.4.1 不想要的部分:XXX=“none”
3.4.2 修改背景(包括坐标轴)
4.绘制边际图形
0 R语言概述
R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。重点是:画图Nice!没有找到对手!就算有对手也没用,对于科研党来说R语言用的还是多一些(反正本人看到的文献还是R语言画图多一点)。
所以博主立志尽快把R语言语法,特别是绘图方面融会贯通,因此博客内容分成两大部分:(1)R语言学习(将会以从浅至深的顺序梳理、摘抄R语言相关知识);(2)R语言绘图实战(时间紧迫,别人的图太美急需学习)。
关于R语言概述的内容以及软件安装和界面调试参考以下博文:
项目 | 链接 |
R语言介绍 | R语言是什么? |
软件安装 | R和Rstudio 安装教程 |
软件安装(Windows) | Windows下安装和编译 |
R语言入门 | R语言入门教程-敲着试一试 |
R语言基本统计分析 | 基本统计分析 |
R Studio界面(windows) | windows界面讲解 |
R Studio界面设置 | 界面设置(如何更加美观) |
1 本次实战简介
我们在论文中找到如此炫酷的一张图(Mutch et al., 2019),要进行分析是如何制作的:
我们来看这张图,主要有以下几个方面:(1)六边形散点(且越聚集颜色越深,为一维核密度分布,而且颜色是有透明度的)(2)横纵坐标轴文字以及坐标轴刻度(其中横坐标两个刻度一个数字)(3)左上角文字标“D”,右边文字描述,而且还有“+”、“-”的符号(4)边际直方图分布
那么我们的代码也应该从这四个方面分别入手,以求得最好看的图片。
注意:R语言绘图有句话“所见即所得”,所以我们画图的时候不着急一下子都画出来,只要把每个部分累加就行。所以该图可以理解为:散点+(横纵坐标轴+坐标轴名称)+角标文字+边际直方图。
2 涉及的工具包
首先解决下载问题,R语言使用我们都下载两个东西:R和R Studio,一个是语言环境,一个是IDE(我是这么理解的)。
附:R语言常用工具包及介绍。
- 常用工具包分类
- 常用包
2.1 ggplot2简介
一个绘图的R包,让人欲罢不能,纵使秃头白发也难舍弃,秒杀科研论文的工具包。详细内容见ggplot2详细讲解。
2.2 ggExtra简介
这个工具包介绍很少很少,甚至连成文的材料都没有,……但是它的功能很明确!ggExtra:绘制图形的边界直方图。
2.3 ggpointdensity简介
这个就更加“小”了,但是却很常用,用来绘制密度散点图。R语言绘制密度散点图
3 开始画图
3.1 安装并载入
#以上内容分开输入 不要着急
install.packages("ggplot2")
install.packages("ggExtra")
install.packages("ggpointdensity")
library(ggplot2)
library(ggExtra)
library(ggpointdensity)
3.2 导入数据
点击Import Dataset 注意修改变量名称和数据格式。
3.3 二维散点核密度图
接着我们开始绘制散点核密度图(这里以R语言自带的数据集iris为例)
p<- ggplot(data =iris,mapping = aes(x =Sepal.Length,y = Sepal.Width))+geom_pointdensity()
#将iris替换成自己的data.frame数据集,aes()函数里x,y=自己的X与Y变量名称
那么我们掌握了如何绘制散点核密度图,接下来思考的是如何绘制成更加好看的六边形散点核密度图,遗憾的是,绘制六边形散点图需要一个R包(hexin),本人尝试了多种方法都没有成功,因此附上相关教程:R语言绘图教程(含六边形散点图绘制)
3.4 修改横纵坐标轴和坐标轴名称
在R语言ggplot2里,修改背景、横纵坐标轴统统归theme()函数来管。有一个博文讲的很明白,在此引用:ggplot2 theme函数。
结合以上内容,我们来举几个例子。
3.4.1 不想要的部分:XXX=“none”
比如我们不想要图例 那就legend.position="none";
此处注意,我们之前说过R语言绘图就是不断地加起来那么就要让:原来的图P=P+一个变化
p<-p+theme(legend.position="none")
3.4.2 修改背景(包括坐标轴)
新版本的R可以用一个最简单的办法:theme_classic() 但是很多时候有bug,所以不好实现。
那么我们逐项修改:
- 将背景删去,同样删去网格线
p<-p+theme(panel.grid.major = element_blank(),panel.grid.minor=element_blank(),panel.border = element_blank(), panel.background = element_blank())
- 添加坐标轴的实线
pt<-pt+theme(axis.line.x = element_line(color = "black"), axis.line.y = element_line(color = "black"))
修改坐标轴极值和间距
p<-p+scale_y_continuous(breaks=seq(2,4.5,1))+scale_x_continuous(breaks=seq(0,8,2)) #修改成适合自己的坐标轴范围,其中第一个是最小值,第二个是最大值,第三个是间距
- 添加文字(包括坐标轴名称)
默认坐标轴名称是变量的名称,如果我们要修改的话,则修改刻度标签
p<-p+xlab("this is xlab")+ ylab("this is ylab")
此外,我们想要添加文本注释,就就使用geom_text()函数:(引用自绘制文本,注释和主题)
geom_text(mapping = NULL, data = NULL, stat = "identity",position = "identity", ..., parse = FALSE, nudge_x = 0, nudge_y = 0,check_overlap = FALSE, na.rm = FALSE, show.legend = NA,inherit.aes = TRUE)
参数注释:
- mapping:映射,使用aes()设置映射
- stat:统计转换
- position:位置调整
- check_overlap:默认值是 FALSE,如果是TRUE,新增的文本不会覆盖同一图层中的先前文本。
- parse:默认值是FALSE,不对文本内容进行解析。
- show.legend:是否显示该文本图层的图例(legend)
- nudge_x,nudge_y:把文本做小幅移动的距离
geom_text()可以识别的aes参数:
- x
- y
- label:显示的文本
- alpha:文本重叠部分的透明度
- angle:文本旋转的角度
- colour:文本的前景色
- family:字体名称
- fontface:字体类型,有效值是:"plain", "bold", "italic", "bold.italic"
- group:分组
- hjust、vjust:文本的水平和垂直调整距离,取值范围是0-1,0代表right/bottom,1代表left/top。
- lineheight:
- size:字体的大小
因此我们可以使用该函数来进行注释的添加,但是本人尝试了半天还是没搞明白,仅供参考,于是终于找到了另一个高效的函数annotate(),它的使用方法非常简单,annotate("text",x=3,y=3,label="加入的文字"),其中仅仅需要修改x和y坐标(同数据坐标一样)。
因此可以这样使用
p<-p+annotate("text",x=3,y=3,label="文字充填")
#增加尺寸
p<-p+annotate("text",x=4,y=4,label="文字充填",size=2)
4.绘制边际图形
最后来绘制边际图形,有很多个类型可供选择,包括直方图、核密度图等,具体参考边际直方图
type=" " | 作用 |
density | 密度曲线 |
histogram | 直方图 |
boxplot | 箱线图 |
violin | 小提琴图 |
densigram | 密度图与直方图 |
ggMarginal(p,type="histogram",fill="skyblue")
其中更改type类型即可绘制不同的图形,fill表示填充颜色,col可更改描边颜色。我们使用核密度曲线尝试。(颜色参考颜色参数,更加详细的形状设置参考R语言绘图各类基本参数)
ggMarginal(p,type="density",col="red",fill="skyblue")
R语言学习实战——解决边际分布图相关推荐
- 统计学习导论之R语言应用(四):分类算法R语言代码实战
统计学习导论之R语言应用(ISLR) 参考资料: The Elements of Statistical Learning An Introduction to Statistical Learnin ...
- 统计学习导论之R语言应用(三):线性回归R语言代码实战
统计学习导论(ISLR) 参考资料 The Elements of Statistical Learning An Introduction to Statistical Learning 统计学习导 ...
- R语言学习之数据分析实战(一)
R语言学习之数据分析实战(一) 一.线性回归 回归(regression):通常指那些用一个或多个预测变量,也称自变量或解释变量,来预测响应变量,也称为因变量.效标变量或结果变量的方法. 普通最小二乘 ...
- r语言c函数怎么用,R语言学习笔记——C#中如何使用R语言setwd()函数
在R语言编译器中,设置当前工作文件夹可以用setwd()函数. > setwd("e://桌面//") > setwd("e:\桌面\") > ...
- 数据挖掘r语言和python知乎_Hellobi Live |R语言爬虫实战案例分享:网易云课堂、知乎live、今日头条、B站视频...
课程名称 R语言爬虫实战案例分享:网易云课堂.知乎live.今日头条.B站视频 网络数据抓取是数据科学中获取数据中的重要途径,但是一直以来受制于高门槛,都是专业程序员的专属技能.直到R语言和Pytho ...
- 2021年R语言学习路线以及资源推荐
R语言学习从入门到熟练掌握资源推荐 最近有些小伙伴在后台问我要一些资源,呃,前段时间一直没看到消息,现在统一整理一下,由于微信不让发这个,我就放在公众号里了,在公众号里回复[R语言学习资源]即可,如果 ...
- R语言学习笔记(1~3)
R语言学习笔记(1~3) 一.R语言介绍 x <- rnorm(5) 创建了一个名为x的向量对象,它包含5个来自标准正态分布的随机偏差. 1.1 注释 由符号#开头. #函数c()以向量的形式输 ...
- r语言 读服务器数据,R语言数据实战 | 安装R语言
原标题:R语言数据实战 | 安装R语言 1.R的获取和安装 获取和安装R很容易(这也是它"亲民"的地方),具体步骤如下: Step 1: 登陆R语言官方网站https://www. ...
- R语言学习手记 (1)
R语言学习手记 (1) 经管的会计和财管都会学数据统计与分析R语言这门课,加上我也有点兴趣,就提前选了这门课,以下的笔记由老师上课的PPT.<R语言编程艺术>和<R语言数据科学> ...
最新文章
- python--内置函数
- 用markdown写博客园
- SQL语句关键字执行顺序
- 强化学习(五)用时序差分法(TD)求解
- mybatis-generator自动生成mapper
- cordova打开文件_Cordova开发App入门(四)打开及下载第三方App
- queue POJ 2259 Team Queue
- Hulu 2013北京地区校招笔试题
- 将Sublime Text 添加到鼠标右键菜单的教程方法
- IE6/IE7/IE8/Firefox/Chrome/Safari的CSS hack兼容一览表
- 车载系统不识别 U盘
- CREO图文教程:三维设计案例之水龙头的螺旋弹簧设计图文教程之详细攻略
- 打卡赠书,新一年的读者福利 !
- 帮嫦娥五号登月的AI还能用来玩游戏,20行Python代码带你领略强化学习的风采
- 好像有点看不懂,脑洞
- 求大于某数的最小素数Python版
- 使用Travis CI进行在线build
- 克拉克松Clarkson Research情报网注册登录及进行数据查询(以世界造船厂分布为例)
- 小巧精美原厂轴 Cherry发布全新MX Board 1.0
- 关于 TRTC (实时音视频通话模式)在我司的实践
热门文章
- 苹果手机怎么取消优酷自动续费_优酷VIP会员:优酷怎么取消自动续费
- linux重启python服务_linux重启服务命令
- 技能学习:学习使用php(tp6框架) + vue.js,开发前端全栈网站-2.启动项目
- uni-app 监听移动端的物理返回键
- ReverseFind(‘//’)函数并不是得到从右开始到//的字节数
- Hibernate查询技术之HQL语句
- 视频教程-Python数据可视化库:Matplotlib视频课程-Python
- Linux服务器设置ssh私钥登录
- CSS —— 选择器(带你深入了解如何使用选择器)
- Linux之killall命令