前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >阿榜的生信笔记6-R作图

阿榜的生信笔记6-R作图

原创
作者头像
用户10480134
修改2023-05-04 23:38:39
5500
修改2023-05-04 23:38:39
举报
文章被收录于专栏:黄金榜黄金榜

哈喽,我是学习生物信息学的阿榜!非常感谢您能够点击进来查看我的笔记。我致力于通过笔记,将生物信息学知识分享给更多的人。如果有任何纰漏或谬误,欢迎指正。让我们一起加油,一起学习进步鸭?

这份思维导图可以让大家更容易地了解笔记里面的内容哦?:

大家记住哦,画图是让自己的数据可视化

我给大家介绍下常见的可视化R包:

一、基础绘图函数

①、复习plot()函数

提个小问题:图中6.5和4是什么?

答案:6.5和4是hello的坐标轴位置

代码语言:text
复制
#作图分三类

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

dev.off() #关闭画板

②、先观察下面两个函数,后面会详细介绍:

二、ggplot2包

大家看看学习目录,这是我们接下来要学习的内容

1、入门级绘图模板

大家记住上面的模板,这是基本语法格式

ggplot2与其他包语法有些不同:

2、属性设置,太多了,大家需要使用的时候再来看看吧?

3、映射(重点哦)

关键词:数据框、某一列、图的某个属性

按照上述模板一一对应观察,你能找出他们的规律✌

①、映射设置

提个小问题:一个color的实际参数有引号,另一个color的实际参数没有引号,这是为什么呢?

答案:一个是映射,aes()的参数;另一个是手动设置,geom_point()的参数。

可视化原理如图所示

左边是映射,右边是手动设置

②、下面是几个常见的问题,解决了它们,能让我们图形更加个性化

上述问题加函数

提个小问题:color与fill有什么不同呀?

答案:color设置空心边框的颜色,fill设置实心内容的颜色

4、分面

上图facet_wrap(~ Species)按照三种Species分成了三个面

上图按照两种类型进行分面:Group、Species

上图有两个问题,之前的阿榜的生信笔记都有提到过哦

答案:问题1的答案是letters是内置数据,大家可以在RStudio上试一试

问题2的答案是R语言的默认思想哦

sample()随机抽取个数

5、几何对象

①、ggplot2的几何对象有很多,如下图所示:

②、几何对象可以叠加

geom_smooth()平滑线函数

geom_point()点函数

ggplot()用“+”连接

几何函数叠加有局部和全局两种叠加方式,两种方法各有优势哦

两种设置的作用:

⑥、统计变换

⑦、位置关系

geom_point()与geom_jitter()的区别如上图所示

⑧、坐标系

注意:不同的函数顺序画出图的效果是不一样的哦?,大家可以拿代码试试

⑨、学了这么多知识点,大家是不是有点迷糊了?现在阿榜给大家带来了总结?

不懂的参数,大家可以用帮助文档查看哦?

代码语言:text
复制
#2.ggplot2 中坚力量,语法有个性
##ggplot2的特殊语法:列名不带引号,行末写加号
library(ggplot2)
ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species),
             shape = 24,
             fill="pink")+
  scale_color_manual(values = c("blue","yellow","red"))
                           
ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species))+
  facet_wrap(~ Species)
dat=iris
data$Group=sample(letters[1:5],150,replace=T)
ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species))+
  facet_grid(Group~ Species)

三、ggpubr包

ggpubr包相比ggplot2包语法要简单:

两两之间的比较:

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

四、图片的保存

三段式:

五、阿榜给大家带来一个被叫做神器的R包

为什么它会被叫做神器?

因为它能生成PPT,其中的作用大家自己去体会吧?

六、拼图

这也是一个拼图神器包,以后不用为拼图烦恼了?

七、画板报错

画板报错是我们唯一不用管的报错✌

阿榜送大家一句话:

下面是这份笔记所涉及到的代码,大家快拿去试试吧?

代码语言:text
复制
#作图分三类

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

dev.off() #关闭画板
代码语言:text
复制
#2.ggplot2 中坚力量,语法有个性
##ggplot2的特殊语法:列名不带引号,行末写加号
library(ggplot2)
ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species),
             shape = 24,
             fill="pink")+
  scale_color_manual(values = c("blue","yellow","red"))
                           
ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species))+
  facet_wrap(~ Species)
dat=iris
data$Group=sample(letters[1:5],150,replace=T)
ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species))+
  facet_grid(Group~ Species)
代码语言:text
复制
library(ggplot2)
#1.入门级绘图模板:作图数据,横纵坐标
ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length))
#2.属性设置(颜色、大小、透明度、点的形状,线型等)

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

ggplot(data = iris) + 
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length), 
             color = "blue")

ggplot(data = iris) + 
  geom_point(mapping = aes(x = Sepal.Length, y = Petal.Length), 
             size = 5,     # 点的大小5mm
             alpha = 0.5,  # 透明度 50%
             shape = 8)  # 点的形状

#2.2 映射:按照数据框的某一列来定义图的某个属性
ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species))

## Q1 能不能自行指定映射的具体颜色?

ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species))+
  scale_color_manual(values = c("blue","grey","red"))

## Q2 区分color和fill两个属性
### Q2-1 空心形状和实心形状都用color设置颜色
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号,空心的例子
### Q2-2 既有边框又有内心的,才需要color和fill两个参数

ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species),
             shape = 24,
             fill = "black") #24号,双色的例子

#3.分面
ggplot(data = iris) + 
  geom_point(mapping = aes(x = Sepal.Length, y = Petal.Length)) + 
  facet_wrap(~ Species) 
#双分面
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) 

#4.几何对象

#局部设置和全局设置

ggplot(data = iris) + 
  geom_smooth(mapping = aes(x = Sepal.Length, 
                          y = Petal.Length))+
  geom_point(mapping = aes(x = Sepal.Length, 
                           y = Petal.Length,color=Species))

ggplot(data = iris,mapping = aes(x = Sepal.Length, y = Petal.Length))+   ##ggplot()领头羊
  geom_smooth()+
  geom_point()

#5.统计变换-直方图
View(diamonds)
table(diamonds$cut)

ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut))

ggplot(data = diamonds) + 
  stat_count(mapping = aes(x = cut))

#统计变换使用场景
#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
ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut, y = ..prop.., group = 1))   ##group = 1:五个变量数值都在一个组,他们分别占了多少百分比


#6.位置关系

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

# 6.2堆叠直方图
ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut,fill=clarity))

# 6.3 并列直方图
ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut, fill = clarity), position = "dodge")

#7.坐标系

#翻转coord_flip()

ggplot(data = mpg, mapping = aes(x = class, y = hwy)) + 
  geom_boxplot()+
  coord_flip()
#极坐标系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()

以上是我这次在学习生物信息学过程中所整理的笔记。希望大家能够一起学习,共同进步。如果在笔记中有错误或者不足之处,欢迎大家指正,我们一起加油鸭?

引用自生信技能树——小洁老师

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云原生分布式云中心
云原生分布式云中心(Tencent Kubernetes Engine Distributed Cloud Center, TDCC)是面向多云多集群场景的应用管理平台,支持将云原生化的应用扩展到分布式云,全局视角统一管理和运维分布式云资源,轻松地将您的业务发布至全球,一次部署处处运行。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档