前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >生信技能树 Day6 R语言作图入门

生信技能树 Day6 R语言作图入门

原创
作者头像
用户11064093
修改2024-04-15 23:39:56
1150
修改2024-04-15 23:39:56

R 语言作图

1. 初识作图包

代码语言:r
复制
#1.基础包 略显陈旧 了解一下一般不用
plot(iris[,1],iris[,3],col = iris[,5]) 
text(6.5,4, labels = 'hello') # 图例的位置
代码语言:r
复制
dev.off() #关闭画板
代码语言:r
复制
#2.ggplot2 中坚力量,语法有个性,扩展性强,推荐使用
library(ggplot2)
ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species))
代码语言:r
复制
#3.ggpubr 新手友好型 ggplot2简化和美化 褒贬不一
library(ggpubr)
ggscatter(iris,
          x="Sepal.Length",
          y="Petal.Length",
          color="Species")

2. 入门级绘图模板

代码语言:r
复制
ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length))
代码语言:r
复制
# 作图数据 作什么图 xy轴
# 特殊语法:列名不带引号,行末写加号按回车自动缩进

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

代码语言:r
复制
#2.1 手动设置,需要设置为有意义的值

ggplot(data = iris) + 
  geom_point(mapping = aes(x = Sepal.Length, # mapping映射
                           y = Petal.Length), 
             color = "blue")
代码语言:r
复制
ggplot(data = iris) + 
  geom_point(mapping = aes(x = Sepal.Length, y = Petal.Length), 
             size = 5,     # 点的大小5mm
             alpha = 0.5,  # 透明度 50%
             shape = 8)  # 点的形状
代码语言:r
复制
#2.2 映射:按照数据框的某一列来定义图的某个属性
ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species))
代码语言:r
复制
## 映射color:根据某一列的内容分配颜色。手动设置:把图形设置为一或多个颜色,与数据内容无关
代码语言:r
复制
## Q1 能不能自行指定映射的具体颜色?注意写加号 映射和指定颜色必须都要写 十六进制颜色编码

ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species))+
  scale_color_manual(values = c("blue","grey","red"))
代码语言:r
复制
# 好用的配色R包 RColorBrewer ggsci paletteer
ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species))+
  scale_color_brewer(palette = "Set1")
代码语言:r
复制
## Q2 区分color和fill两个属性
### Q2-1 空心形状和实心形状都用color设置颜色
ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species),
             shape = 17) #17号,实心的例子
代码语言:r
复制
ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species),
             shape = 2) #2号,空心的例子
代码语言:r
复制
### Q2-2 既有边框又有内心的,才需要color和fill两个参数

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

4. 几何对象

代码语言:r
复制
# geom_开头的函数是画图函数,画出的是一个几何对象,一个图层,图层可以叠加
#局部设置和全局设置
## 局部设置
ggplot(data = iris) + 
  geom_smooth(mapping = aes(x = Sepal.Length, 
                          y = Petal.Length))+
  geom_point(mapping = aes(x = Sepal.Length, 
                           y = Petal.Length))
代码语言:r
复制
## 全局设置 每个图层有特殊设置的地方可以单独写在他的括号里
ggplot(data = iris,mapping = aes(x = Sepal.Length, y = Petal.Length))+
  geom_smooth()+
  geom_point()
代码语言:r
复制
ggplot(data = iris,mapping = aes(x = Species, y = Sepal.Width, fill = Species))+
  geom_boxplot()+
  geom_point()
代码语言:r
复制
# 发现点图的所有点都在一条竖线上,存在很多重叠的点,失真
## 抖动的点图
ggplot(data = iris,mapping = aes(x = Species, 
                                 y = Sepal.Width,
                                 fill = Species)) + 
  geom_boxplot()+
  #geom_point(position = "jitter")
  geom_jitter()

5.坐标系

代码语言:r
复制
ggplot(data = iris,mapping = aes(x = Species, 
                                 y = Sepal.Width,
                                 fill = Species)) + 
  geom_boxplot()+
  geom_jitter()+ 
  coord_flip() ## 翻转坐标系

6. 主题

代码语言:r
复制
ggplot(data = iris,mapping = aes(x = Species, 
                                 y = Sepal.Width,
                                 fill = Species)) + 
  geom_boxplot()+
  geom_jitter()+ 
  theme_bw() ## 改主题,去掉灰色格子 theme_函数

ggplot2语法

好用的学习绘图网站STHDA

练习题

代码语言:r
复制
ggplot(data = iris,mapping = aes(x = Sepal.Width, y = Species))+
  geom_violin(aes(fill = Species))+
  geom_boxplot()+
  geom_jitter(aes(shape = Species))
  # 图层顺序与代码顺序有关

ggpubr.R

代码语言:r
复制
# ggpubr 搜代码直接用,基本不需要系统学习

# sthda上有大量ggpubr出的图
library(ggpubr)
p = ggboxplot(iris, x = "Species", y = "Sepal.Length",
              color = "Species", shape = "Species",add = "jitter") # 代码很简单
p
代码语言:r
复制
# 添加显著性标记
my_comparisons <- list( c("setosa", "versicolor"), 
                        c("setosa", "virginica"), 
                        c("versicolor", "virginica") )# list打包向量
p + stat_compare_means(comparisons = my_comparisons,
                       aes(label = after_stat(p.signif)))

ggplot2 添加显著性标记方法类似,可参考以下内容https://zhuanlan.zhihu.com/p/644988686

保存图片

代码语言:r
复制
#图片保存的三种方法
#1.基础包作图的保存
pdf("iris_box_ggpubr.pdf")
boxplot(iris[,1]~iris[,5])
text(6.5,4, labels = 'hello')
dev.off() # 关闭画板,不出图可能是没关闭画板
代码语言:r
复制
#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")
代码语言:r
复制
#3.eoffice包 导出为ppt,全部元素都是可编辑模式
library(eoffice)
topptx(p,"iris_box_ggpubr.pptx")

拼图

画图部分的扩展学习

画图代码+你的数据+你解决问题的能力=你的图

画图的正确思维 重要的是调整数据与示例数据一致

找现成的画图代码:STHDA

R语言的综合应用

后面分专题讲解

引用自生信技能树

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • R 语言作图
    • 1. 初识作图包
      • 2. 入门级绘图模板
        • 3. 属性设置(颜色、大小、透明度、点的形状,线型等)
          • 4. 几何对象
            • 5.坐标系
              • 6. 主题
                • ggplot2语法
                  • 练习题
                    • ggpubr.R
                      • 保存图片
                        • 拼图
                          • 画图部分的扩展学习
                            • 画图的正确思维 重要的是调整数据与示例数据一致
                              • 找现成的画图代码:STHDA
                              • R语言的综合应用
                              相关产品与服务
                              图数据库 KonisGraph
                              图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
                              领券
                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档