Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >从零开始的异世界生信学习 R语言部分 05 作图-1

从零开始的异世界生信学习 R语言部分 05 作图-1

原创
作者头像
用户10361520
发布于 2023-03-05 14:21:22
发布于 2023-03-05 14:21:22
83300
代码可运行
举报
运行总次数:0
代码可运行

1.常用的可视化R包

可视化R包
可视化R包

2.三种R包的作图函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#作图分三类

#1.基础包 略显陈旧 了解一下
plot(iris[,1],iris[,3],col = iris[,5]) 
text(6.5,4, labels = 'hello')

dev.off() #关闭画板

#2.ggplot2 中坚力量,语法有个性
library(ggplot2)
ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species))

#3.ggpubr 新手友好型 ggplot2简化和美化 褒贬不一
library(ggpubr)
ggscatter(iris,
          x="Sepal.Length",
          y="Petal.Length",
          color="Species")

3.ggplot2语法

3.1入门级基础语法规则

ggplot2 入门级语法
ggplot2 入门级语法

ggplot2的特殊语法规则:列名不带引号,行末写加号(加号表示不同函数之间的连接)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(ggplot2)
#1.入门级绘图模板:作图数据,横纵坐标
ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length))

3.2属性设置(颜色、大小、透明度、点的形状,线型等)

3.2.1手动设置,需要设置为有意义的值

属性设置
属性设置

color 颜色,可以用RGB编码值的字符串

size 大小,只能用数字

shape 形状,数字编号

alpha 透明度,0<x<1的数字

fill 填充颜色

只能全部统一设置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ggplot(data = iris) + 
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length), 
             color = "blue")
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ggplot(data = iris) + 
  geom_point(mapping = aes(x = Sepal.Length, y = Petal.Length), 
             size = 5,     # 点的大小5mm
             alpha = 0.5,  # 透明度 50%
             shape = 8)  # 点的形状

3.2.2 映射:按照数据框的某一列来定义图的某个属性

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#2.2 映射:按照数据框的某一列来定义图的某个属性
ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species))
映射和手动输入的区别
映射和手动输入的区别
映射和手动输入的区别
映射和手动输入的区别
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
## Q1 能不能自行指定映射的具体颜色?

ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species))+
  scale_color_manual(values = c("blue","grey","red"))
#color中的映射有多少个取值,manual应该就有几个颜色取值
映射的取值
映射的取值
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
## Q2 区分color和fill两个属性
##color是颜色,fill是填充颜色
### Q2-1 空心形状和实心形状都用color设置颜色(形状中1-20都不需要填充颜色)
ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species),
             shape = 17) #17号,实心的例子

ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species),
             shape = 2) #2号,空心的例子
17号形状,实心
17号形状,实心
2号形状,空心
2号形状,空心
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
### Q2-2 既有边框又有内心的,才需要color和fill两个参数

ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species),
             shape = 24,
             fill = "black") #24号,双色的例子,填充颜色为黑色
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ggplot(data = iris)+
  geom_boxplot(mapping = aes(x = Species,
                           y = Sepal.Width,
                           fill= Species))
箱线图的颜色用fill函数填充
箱线图的颜色用fill函数填充

3.2.3 分面

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#3.分面
ggplot(data = iris) + 
  geom_point(mapping = aes(x = Sepal.Length, y = Petal.Length)) + 
  facet_wrap(~ Species) 
##分面是根据数据的某一列把一张图分成若干的子图,根据列的取值分成若干的图
##用来分面的列:1.应该是分类变量,离散型数据;2.取值数量有限;
分面的图
分面的图
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#双分面
dat = iris
dat$Group = sample(letters[1:5],150,replace = T)
ggplot(data = dat) + 
  geom_point(mapping = aes(x = Sepal.Length, y = Petal.Length)) + 
  facet_grid(Group ~ Species)  #按照group列分隔行,species分隔列
  ##sample()函数表示随机取样
  ##dat$Group = sample(letters[1:5],150,replace = T) 表示在数据中新增了一列,其中按照内置数据letters(26个小写字母)中1-5A-E)中可重复的取150个值

3.2.4 几何对象

指一个以geom开头的函数画出来的所有东西称为一个几何对象,也称为了一个图层

几何对象可以叠加

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#4.几何对象

#局部设置和全局设置

ggplot(data = iris) + 
  geom_smooth(mapping = aes(x = Sepal.Length, 
                          y = Petal.Length))+
  geom_point(mapping = aes(x = Sepal.Length, 
                           y = Petal.Length))  ##局部设置

ggplot(data = iris,mapping = aes(x = Sepal.Length, y = Petal.Length))+
  geom_smooth()+
  geom_point()  ##全局设置
##两种代码的图一样
局部设置和全局设置
局部设置和全局设置

3.2.5 统计变换

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#5.统计变换-直方图
View(diamonds)
table(diamonds$cut) ##内置数据钻石的切割质量

ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut))  ##geom_bar函数默认没有y参数

ggplot(data = diamonds) + 
  stat_count(mapping = aes(x = cut))
## 图片的横坐标为钻石切割质量,纵坐标为每个取值的格式。作图只需要一列
## geom开头的几何对象函数,stat开头的几何变换函数,两种函数存在对应
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#统计变换使用场景
#5.1.不统计,数据直接做图
fre = as.data.frame(table(diamonds$cut))
fre

ggplot(data = fre) +
  geom_bar(mapping = aes(x = Var1, y = Freq), stat = "identity")
#5.2count改为prop,统计比例而不是具体数目,group参数表示分类统一比例
ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut, y = ..prop.., group = 1))

3.2.6 位置关系

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 6.1抖动的点图
ggplot(data = iris,mapping = aes(x = Species, 
                                 y = Sepal.Width,
                                 fill = Species)) + 
  geom_boxplot()+
  geom_point()

ggplot(data = iris,mapping = aes(x = Species, 
                                 y = Sepal.Width,
                                 fill = Species)) + 
  geom_boxplot()+
  geom_jitter()   ##jitter绘制抖动的点图
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 6.2堆叠直方图
ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut,fill=clarity))
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 6.3 并列直方图
ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut, fill = clarity), position = "dodge")

3.2.7 坐标系

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#翻转coord_flip()

ggplot(data = mpg, mapping = aes(x = class, y = hwy)) + 
  geom_boxplot() +
  coord_flip()
##可以实现X轴,Y轴的转换
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#极坐标系coord_polar()
bar <- ggplot(data = diamonds) + 
  geom_bar(
    mapping = aes(x = cut, fill = cut), 
    width = 1
  ) + 
  theme(aspect.ratio = 1) +
  labs(x = NULL, y = NULL)
bar
bar + coord_flip()
bar + coord_polar()
ggplot2 画图模板
ggplot2 画图模板

##作图函数后面 +theme_classic() 可以去掉灰色的背景板

4. ggpubr 包

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# ggpubr 搜代码直接用,基本不需要系统学习

# sthda上有大量ggpubr出的图
library(ggpubr)
ggscatter(iris,x="Sepal.Length",
          y="Petal.Length",
          color="Species")
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
p <- ggboxplot(iris, x = "Species", 
               y = "Sepal.Length",
               color = "Species", 
               shape = "Species",
               add = "jitter")
p  ##ggplot2以及ggpubr绘制的图片可以进行赋值
my_comparisons <- list( c("setosa", "versicolor"), 
                        c("setosa", "virginica"), 
                        c("versicolor", "virginica") )
p + stat_compare_means(comparisons = my_comparisons)+ # Add pairwise comparisons p-value
  stat_compare_means(label.y = 9) 
ggpubr 可以给箱线图添加组间比较的P值
ggpubr 可以给箱线图添加组间比较的P值
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ggplot(data = iris, mapping = aes(x = Species,
                                               y = Sepal.Width))+
  geom_violin(mapping = aes(fill = Species))+
  geom_boxplot()+
  geom_jitter(mapping = aes(shape = Species))+
  coord_flip()
#  也可以通过增加这个函数调整点图的点的形状 scale_shape_manual(values = c())
# 图层的叠放顺序取决于代码的顺序,先写的代码图片在最底下

4.图片的保存和导出

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#图片保存的三种方法

#1.基础包作图的保存
pdf("iris_box_ggpubr.pdf")
boxplot(iris[,1]~iris[,5])
text(6.5,4, labels = 'hello')
dev.off()

#2.ggplot系列图(包括ggpubr)通用的简便保存 ggsave
p <- ggboxplot(iris, x = "Species", 
               y = "Sepal.Length",
               color = "Species", 
               shape = "Species",
               add = "jitter")
ggsave(p,filename = "iris_box_ggpubr.png")
##保存的时候可以调节图片的参数,包括长宽以及像素,格式

#3.eoffice包 导出为ppt,全部元素都是可编辑模式
library(eoffice)
topptx(p,"iris_box_ggpubr.pptx")

5.拼图

注意学习!!!

STHDA网站有很多作图代码

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
R语言 基础作图
*ggplot2中通过不同的geom函数生成图层,从前往后覆盖,因此需要考虑函数书写的顺序
Magnolia
2023/01/06
1.5K0
R语言作图基础20230206
ps:高级绘图函数是指可以绘制出一张图,而低价绘图函数是指在图中添加的“零部件”,低级绘图函数必须在高级绘图函数的基础上才能绘制,二者都是base包的内容
顾卿岚
2023/02/08
1.6K0
跟小洁老师学习R语言的第六天
图片 图片 常用可视化R包 作图 base ggplot2(特殊语法:列名不带引号,行末写加号) 图片 颜色:color 大小:size 形状:shape 图片 透明度:alpha 填充颜色:fill(既有边框又有内心的,才需要color和fill两个参数) 映射和手动设置的区别 图片 自行指定映射的具体颜色 ggplot(data = iris)+ geom_point(mapping = aes(x = Sepal.Length, y = Pe
贝诺酯
2023/03/16
5650
R语言作图
作图baseggplot2 ★ggpubr拼图par里的mfrowgrid.arrange cowplotcustomLayoutpatchwork ★导出经典三段论ggsave ★(属于ggplot2,可以存储)eoffice (可以导出为ppt)ggplot2语法入门级绘图模板ggplot(data=<DATA>)+ <GEOM_FUNCTION>(mapping=aes(<MAPPINGS>)) #ggplot() 括号里面是数据 例如 ggplot(data=iris)+ geom_po
大胖橘
2023/03/14
1.7K0
阿榜的生信笔记6-R作图
哈喽,我是学习生物信息学的阿榜!非常感谢您能够点击进来查看我的笔记。我致力于通过笔记,将生物信息学知识分享给更多的人。如果有任何纰漏或谬误,欢迎指正。让我们一起加油,一起学习进步鸭? 这份思维导图可以
用户10480134
2023/04/30
6300
R语言基础5(绘图基础)
str_detect(x,"h")##是否含有关键词h,生成与X长度相等的逻辑值向量,可用于向量取子集;
Erics blog
2023/09/19
4790
生信技能树 R语言入门 ggplot2画图
ggplot常用的五个参数:color, size, shape, alpha, fill;shape有25中形状
大茗
2023/04/05
8720
2023.4生信马拉松day6-绘图
base包、ggplot2、ggpubr(ggpubr对ggplot2进行了简化和美化,适用于新手入门,可操作空间较小)
清南
2023/04/17
1.2K0
R语言基础笔记-03(ggplot2)
<GEOM_FUNCTION>(mapping =aes(<MAPPINGS>))
我不知道
2023/03/14
8980
生信技能树R语言学习直播配套笔记
1.1 判断数据类型class() 1.2 按Tab键自动补全1.3 数据类型的判断和转换 (1)is 族函数,判断,返回值为TRUE或FALSE
生信技能树
2022/06/08
1.2K0
生信技能树R语言学习直播配套笔记
R语言笔记-5
ggplot2是与base r语言不同的作图语法,最少元素包括:指定数据、美学映射、几何对象
Jon_L
2023/05/21
6840
R语言画图——生信技能书
geom_point(mapping = aes(x = Sepal.Length,
用户11211038
2024/07/18
1210
十一、画图(ggplot2、ggpubr)及图片保存
Q1 :能不能自行指定映射的具体颜色? 想要自行指定映射的颜色,就必须要有映射。
叮当猫DDM
2023/02/09
2.4K0
生信技能树 Day6 R语言作图入门
ggplot2 添加显著性标记方法类似,可参考以下内容https://zhuanlan.zhihu.com/p/644988686
用户11064093
2024/04/15
1990
第六课
---title: "class6.1"author: "xiaowang"date: "2023-04-18"output: html_document---R语言作图与绘图相关的R包的安装options("repos"=c(CRAN="http://mirrors.tuna.tsinghua.edu.cn/CRAN/"))#R包的安装if(!require(ggplot2))install.packages('ggplot2',update = F,ask = F)if(!require(ggpubr)
小王同学@生信
2023/04/18
1780
第六课
R03 绘图
aes()函数是ggplot2包中一个重要的函数,它用于将变量映射到图形属性上,如颜色、形状、大小、位置等。它的主要功能包括以下三个方面:
大豆虫
2023/03/16
1.2K0
生信马拉松 Day6
开头一个小tips:在运行R project时,界面上最好每次只有一个脚本,否则不同脚本之间流程、变量容易混乱
阿呆的月历
2024/01/15
2580
R语言day6:从此用ggplot函数画好看的图
不会写代码的医学生
2024/03/12
2800
R语言学习笔记-Day5
拼图:par里的mfrow, grid.arrange, cowplot, patchwork
用户11190095
2024/07/07
2500
R学习 作图
guacamole
2024/03/12
1810
相关推荐
R语言 基础作图
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验