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

生信技能树 R语言入门 ggplot2画图

原创
作者头像
大茗
发布2023-04-05 11:35:47
7790
发布2023-04-05 11:35:47
举报
文章被收录于专栏:R语言学习-大茗R语言学习-大茗

ggplot2基操

1.入门级绘图模板:作图数据+横纵坐标

代码语言:javascript
复制
ggplot(data = iris) + 
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length))

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

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

颜色:

代码语言:javascript
复制
library(ggplot2)

ggplot(data = iris) + 
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length), 
             color = "blue")
#输入参数时,列名不需要加引号

大小、透明度、形状:

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

ggplot常用的五个参数:color, size, shape, alpha, fill;shape有25中形状

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

代码语言:javascript
复制
ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species))+
  scale_color_manual(values = c("blue","grey","red"))

2.2.2区分color和fill两个属性:既有边框又有内心的,才需要color和fill两个参数

代码语言:javascript
复制
ggplot(data = iris)+
  geom_point(mapping = aes(x = Sepal.Length,
                           y = Petal.Length,
                           color = Species),
             shape = 24,
             fill = "black") #24号,双色的例子
代码语言:javascript
复制
ggplot(data = iris,mapping = aes(x = Species,
                                 y = Sepal.Width,
                                 color = Species))+
  geom_boxplot()
代码语言:javascript
复制
#变成实心的颜色:将color改成fill
ggplot(data = iris,mapping = aes(x = Species,
                                 y = Sepal.Width,
                                 fill = Species))+
  geom_boxplot()

3.分面

代码语言:javascript
复制
ggplot(data = iris) + 
  geom_point(mapping = aes(x = Sepal.Length, y = Petal.Length)) + 
  facet_wrap(~ Species) 

3.2 双分面

代码语言:javascript
复制
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) 

#sample(x, size, replace = FALSE, prob = NULL) #size是取几个数,replace是是否能重复取

4.几何对象 ——局部设置和全局设置

代码语言:javascript
复制
ggplot(data = iris,mapping = aes(x = Sepal.Length, y = Petal.Length))+
  geom_smooth()+
  geom_point()

ggplot内是全局设置,geom里是局部设置

5.统计变换-直方图

代码语言:javascript
复制
View(diamonds)
table(diamonds$cut)
## 
##      Fair      Good Very Good   Premium     Ideal 
##      1610      4906     12082     13791     21551
代码语言:javascript
复制
ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut))

5.1 不统计,数据直接做图

代码语言:javascript
复制
fre = as.data.frame(table(diamonds$cut))
fre
ggplot(data = fre) +
  geom_bar(mapping = aes(x = Var1, y = Freq), stat = "identity")

5.2 count改为prop

代码语言:javascript
复制
ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut, y = ..prop.., group = 1))

6.位置关系

6.1抖动的点图

代码语言:javascript
复制
ggplot(data = iris,mapping = aes(x = Species, 
                                 y = Sepal.Width,
                                 fill = Species)) + 
  geom_boxplot()+
  geom_point()

所有点在一条线上,分开各个点使其显示更具象

代码语言:javascript
复制
ggplot(data = iris,mapping = aes(x = Species,
                                 y = Sepal.Width,
                                 fill = Species))+
  geom_boxplot(width=1)+
  geom_jitter(size=0.6)

6.2堆叠直方图

代码语言:javascript
复制
ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut,fill=clarity))

6.3 并列直方图

代码语言:javascript
复制
ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut, fill = clarity), position = "dodge")

7. 坐标系

7.1 翻转coord_flip()

代码语言:javascript
复制
ggplot(data = mpg, mapping = aes(x = class, y = hwy)) + 
  geom_boxplot() +
  coord_flip()

7.2 极坐标系coord_polar()

代码语言:javascript
复制
bar <- ggplot(data = diamonds) + 
  geom_bar(
    mapping = aes(x = cut, fill = cut), 
    width = 1
  ) + 
  theme(aspect.ratio = 1) +
  labs(x = NULL, y = NULL)

  bar
代码语言:javascript
复制
bar + coord_flip()
bar + coord_polar()

练习题:绘图

代码语言:javascript
复制
ggplot(data=iris,mapping=aes(x=Sepal.Width,y=Species))+
  geom_violin(aes(fill=Species))+
  geom_boxplot()+
  geom_jitter(aes(shape=Species))
代码语言:javascript
复制
ggplot(data=iris)+
  geom_violin(mapping=aes(x=Sepal.Width,y=Species,fill=Species))+
  geom_boxplot(mapping=aes(x=Sepal.Width,y=Species))+
  geom_jitter(mapping=aes(x=Sepal.Width,y=Species),shape=rep(c(20,17,15),each=50))

推荐配色R包:paletteer https://www.yuque.com/xiaojiewanglezenmofenshen/dbwkg1/ilbqqz

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ggplot2基操
    • 1.入门级绘图模板:作图数据+横纵坐标
      • 2.属性设置(颜色、大小、透明度、点的形状,线型等)
        • 2.1 手动设置,需要设置为有意义的值
      • 2.2 映射:按照数据框的某一列来定义图的某个属性
        • 2.2.2区分color和fill两个属性:既有边框又有内心的,才需要color和fill两个参数
      • 3.分面
        • 3.2 双分面
      • 4.几何对象 ——局部设置和全局设置
        • 5.统计变换-直方图
          • 5.1 不统计,数据直接做图
          • 5.2 count改为prop
        • 6.位置关系
          • 6.1抖动的点图
          • 6.2堆叠直方图
          • 6.3 并列直方图
        • 7. 坐标系
          • 7.1 翻转coord_flip()
          • 7.2 极坐标系coord_polar()
        • 练习题:绘图
        相关产品与服务
        图数据库 KonisGraph
        图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档