前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >day4 呦呦鹿鸣——R for data science阅读笔记之ggplot()

day4 呦呦鹿鸣——R for data science阅读笔记之ggplot()

原创
作者头像
用户10918035
发布2024-01-19 09:01:27
2330
发布2024-01-19 09:01:27
举报
文章被收录于专栏:生信星球学习小组

R for data science

1 data visualization

原网址

https://r4ds.hadley.nz/data-visualize#visualizing-relationships

ggplot2 是一个用于描述和构建图形的连贯系统。使用 ggplot2 可视化单个变量的分布&两个或多个变量之间的关系。

环境:

代码语言:R
复制
install.packages("ggthemes")
install.packages("palmerpenguins::penguins")
library(tidyverse)
library(palmerpenguins)
library(ggthemes)

1,First steps

了解数据结构

列:变量(variable)——可以度量的数量、质量或属性

行:观测值(data point observation )——在相似条件下进行的一组测量值,包含不同的变量的多个值

表格数据:一组与相应变量和观测值相关联的值

变量:所有企鹅的属性

观察值:单个企鹅的所有属性

tibbles:tidyverse的特殊数据框

查看数据框:glimpse(penguins)(Console输出)View(penguins)(R自带交互框)

代码语言:R
复制
palmerpenguins::penguin
glimpse(penguins)
View(penguins)
输出框查看数据框
输出框查看数据框
R自带交互框
R自带交互框

开始可视化

  • 使用ggplot()

第一个参数:在图形中使用的数据集

第二个参数:mapping:如何将数据集中的变量映射到绘图的视觉属性,在aes()中定义

  • 使用geom_形状()定义一个几何图形,表示数据的几何对象

形状:bar-条形图;line-折线图;boxplot-箱线图;point-点

对于有缺失值的数据,散点图内没有显示,但有报错“warning"Removed 2 rows containing missing values (geom_point()).

na.rm 参数在 geom_point() 中有什么作用?默认值为FALSE,即表示warning;更改为TRUE,即静默warning

绘制了一个散点图
绘制了一个散点图
  • 加一个变量 将物种 species作为图例,用不同颜色和形状标识(兼顾色盲群体的需求)
代码语言:R
复制
geom_point(aes(color = species, shape = species))
示意图仅改了颜色,没改形状
示意图仅改了颜色,没改形状
  • 再加一个拟合曲线? 显示体重和鳍状肢长度之间关系的平滑曲线
代码语言:R
复制
geom_smooth(method = "lm")

注意添加位置

是给每个企鹅种群单独拟合曲线?

还是给整个企鹅群体拟合曲线?

  • 给图加上标题吧!——labs()函数 参数:title="",subtitle="",x="",color="",shape=""
  • 改进调色板,使其对色盲安全scale_color_colorblind()函数 综上,第一部分绘图
  • (注:此图中的spiecies为分类变量可改变形状,对色盲群体友好)
代码语言:R
复制
ggplot(
  data = penguins,
  mapping = aes(x = flipper_length_mm, y = body_mass_g)
) +
  geom_point(aes(color = species, shape = species)) +
  geom_smooth(method = "lm") +
  labs(
    title = "Body mass and flipper length",
    subtitle = "Dimensions for Adelie, Chinstrap, and Gentoo Penguins",
    x = "Flipper length (mm)", y = "Body mass (g)",
    color = "Species", shape = "Species"
  ) +
  scale_color_colorblind()
  • (注:此图中的bill_depth_mm为数值变量,没有改变形状,对色盲群体不友好)
代码语言:R
复制
ggplot(
  data = penguins,
  mapping = aes(x = flipper_length_mm, y = body_mass_g)
)+
geom_point(mapping = aes(color=bill_depth_mm))+
  geom_smooth(method="gam")+
  labs(title = "title",subtitle = "subtile",caption ="caption",tag = "tag",alt = "alt",
        alt_insight = "alt_insight")

ggplot2 calls

更简洁的 ggplot2 代码表达式

代码语言:R
复制
ggplot(penguins, aes(x = flipper_length_mm, y = body_mass_g)) +
    geom_point()

penguins |> 
ggplot(penguins, aes(x = flipper_length_mm, y = body_mass_g)) +
    geom_point()  

记住:ggplot 的前两个参数是 data 和 mapping,在简洁代码表达式中会省略,

Visualizing distributions

  • 分类变量
代码语言:R
复制
#绘制条形图检测某一分类变量分布
ggplot(penguins, aes(x = species)) +
    geom_bar()


#根据条形的频率依据处理因子函数对条形重新排序    
ggplot(penguins, aes(x = fct_infreq(species))) +
    geom_bar()

处理因子函数

fct_inorder():按它们首次出现的顺序排列。

fct_infreq() :按每个级别的观测值数(最大在前)

fct_inseq():按级别的数值。

  • 数值变量 数值变量可以是连续的,也可以是离散的。 直方图
代码语言:R
复制
ggplot(penguins, aes(x = body_mass_g)) +
    geom_histogram(binwidth = 200)

binwidth 参数:设置直方图中间隔的宽度,需要摸索找到最适宜的

geom_bar(color = "red")——边框变红

geom_bar(fill = "red")——填色变红

Visualizing relationships

可视化两个或多个变量之间关系

  • 数值变量&分类变量 箱线图 ——一种用于描述分布的位置度量(百分位数)的视觉速记,也能识别潜在的异常值 框上下界之间距离称为四分位距 (IQR),从分布的第 25 个百分位数延伸到第 75 个百分位数; 中位数,框中间的一条线; 这三条线可以让您了解分布的分布,以及分布是在中位数附近对称还是偏向一侧。 任一边缘落下 IQR 超过 1.5 倍的观测值的视觉点,即为异常值。 一条线从框的两端延伸到分布中最远的非异常值点
箱线图
箱线图

密度图

代码语言:R
复制
ggplot(penguins, aes(x = body_mass_g, color = species)) +
    geom_density(linewidth = 0.75)

ggplot()里改

填色fill = species

描边color = species

geom_density()里改:

增加透明度geom_density(alpha = 0.5)

改变线宽linewidth = 0.75

两个分类变量

堆积条形图

可视化了 species 在每个岛屿内的分布

代码语言:R
复制
ggplot(penguins, aes(x = island, fill = species)) +
    geom_bar()

第二个图是通过在几何中设置 position = "fill" 创建的相对频率图,对于比较岛屿之间的物种分布更有用,因为它不受岛屿上企鹅数量不相等的影响。

代码语言:R
复制
ggplot(penguins, aes(x = island, fill = species)) +
  geom_bar(position = "fill")

两个数值变量

  • 散点图geom_point()
  • 平滑曲线geom_smooth()

三个或更多变量

  • 用不同的颜色和形状代表不同观测值
  • 将绘图拆分为不同的子图 按单个变量对绘图进行分面facet_wrap() 参数1:公式? 后跟~变量名(备注:此变量为分类变量)
代码语言:R
复制
ggplot(penguins, aes(x = flipper_length_mm, y = body_mass_g)) +
  geom_point(aes(color = species, shape = species)) +
  facet_wrap(~island)

Saving your plots

保存到项目文件夹中ggsave(filename = "penguin-plot.png")

Quarto容错率高(?)

同时运行两个ggplot(),再运行ggsave(filename = "penguin-plot.png")

后保存的是离ggsave(filename = "penguin-plot.png")最近的ggplot()

生信星球打卡任务,菜鸟一枚,有错误的地方欢迎各位在评论区指导,谢谢!

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • R for data science
    • 1 data visualization
      • 1,First steps
        • 了解数据结构
        • 开始可视化
      • ggplot2 calls
        • 更简洁的 ggplot2 代码表达式
      • Visualizing distributions
        • Visualizing relationships
          • Saving your plots
          相关产品与服务
          灰盒安全测试
          腾讯知识图谱(Tencent Knowledge Graph,TKG)是一个集成图数据库、图计算引擎和图可视化分析的一站式平台。支持抽取和融合异构数据,支持千亿级节点关系的存储和计算,支持规则匹配、机器学习、图嵌入等图数据挖掘算法,拥有丰富的图数据渲染和展现的可视化方案。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档