本公众号R语言和ggplot2笔记系列作品为袁志林老师学员创作,请关注今天二条袁老师组博后招聘启事。

ggplot2绘图基础:

  • 1初识ggplot2、基本用法以及如何绘制几何对象

  • 2图层的使用——基础、怎样加标签、注释

  • 3工具箱——误差线、加权数、展示数据分布

碎碎念ing:终于结束了《ggplot2》的第一部分“Getting Started”,今天开始看第二部分——语法,第四章(Mastering the Grammar)介绍了ggplot2的一些基础语法知识,大概是对前期内容在理论上做一个总结。

建立一个散点图

首先还以“耗油量”数据集(mpg)为例。

library(ggplot2)
mpg
# A tibble: 234 x 11manufacturer model      displ  year   cyl trans      drv     cty   hwy fl    class<chr>        <chr>      <dbl> <int> <int> <chr>      <chr> <int> <int> <chr> <chr>1 audi         a4          1.80  1999     4 auto(l5)   f        18    29 p     comp…2 audi         a4          1.80  1999     4 manual(m5) f        21    29 p     comp…3 audi         a4          2.00  2008     4 manual(m6) f        20    31 p     comp…4 audi         a4          2.00  2008     4 auto(av)   f        21    30 p     comp…5 audi         a4          2.80  1999     6 auto(l5)   f        16    26 p     comp…6 audi         a4          2.80  1999     6 manual(m5) f        18    26 p     comp…7 audi         a4          3.10  2008     6 auto(av)   f        18    27 p     comp…8 audi         a4 quattro  1.80  1999     4 manual(m5) 4        18    26 p     comp…9 audi         a4 quattro  1.80  1999     4 auto(l5)   4        16    25 p     comp…
10 audi         a4 quattro  2.00  2008     4 manual(m6) 4        20    28 p     comp…
# ... with 224 more rows

我们想建立一个展示发动机排量(displ)和高速公路行驶记录每加仑行驶的英里数(hwy)关系的散点图,并用不同颜色标记汽缸变量(cyl)。代码如下:

ggplot(mpg, aes(displ, hwy, colour = factor(cyl))) +geom_point()

You can create plots like this easily, but what is going on underneath the surface? How does ggplot2 draw this plot?

1. 数据的美学映射(Mapping Aesthetics to Data)

散点图到底是啥?你以前见过很多,有可能也用手绘制过。散点图将每个观测值表示为一个点,根据两个变量的值进行定位。除了水平和垂直位置,每个点还具有大小,颜色和形状。这些属性被称为美学(aesthetics),是能在图形上感知的属性。每个美学可以映射到一个变量,或设置为一个常量值。在上图中, displ 映射到横轴上, hwy映射到纵轴上, cyl设置为彩色分类。大小和形状没有映射到变量,但保持其(恒定)默认值。

映射设定好之后,我们可以通过改变函数,画出除了散点图之外的折线图 geom_line()、柱形图 geom_bar()等:

## 折线图
ggplot(mpg, aes(displ, hwy, colour = factor(cyl))) +
geom_line() +
theme(legend.position = "none")
## 柱形图
ggplot(mpg, aes(displ, hwy, colour = factor(cyl))) +
geom_bar(stat = "identity", position = "identity", fill = NA) +
theme(legend.position = "none")

这些图虽然语法上是对的,但毫无意义。

点、线和条形都是不同的几何图形,他们组合起来可以有很多种plot:

Named plot Geom Others
Scatterplot Point ---
Bubblechart Point Size mapped to a variable
Barchart Bar ---
Box-and-whisker plot Boxplot ---
Line chart Line ---

有些图是根据实际需要添加的几何图形,他们没有确定的名称,如下:

ggplot(mpg, aes(displ, hwy, colour = factor(cyl))) +geom_point() +geom_smooth(method = "lm")

2. 标度(Scaling)

实际上,数据集中的数值对计算机没有任何意义。我们需要将它们从数据单位(例如,升,英里每加仑,气缸数量等)转换成计算机可以显示的图形单位(例如,坐标和颜色)。这种转换过程称为Scaling(scales)。

要生成一个完整的图表,需要三个主要元素:

  • data:数据

  • geom:代表数据的几何图形

  • scales and coordinate system:坐标系和标度

复杂化(Adding Complexity)

在普通的散点图中加线条和分面:

ggplot(mpg, aes(displ, hwy)) +geom_point() +geom_smooth() +facet_wrap(~year)

以上代码中增加了三个部分

  1. 分面(facets)

  2. 多个图层(multiple layers)

  3. 统计变换(statistics)

平滑图层 geom_smooth()与点图层 geom_point()不同,因为它不显示原始数据,而是显示数据的统计转换。所以,这个过程的形成是在将数据映射到美学之后,传递到统计转换(stat)加以处理。

图层语法的组成(Components of the Layered Grammar)

图表包括了数据、映射、统计变换、几何图形以及位置调整(position adjustment)。

图层 layers

图层由以下五个方面组成(具体见第五章):

  1. Data

  2. Aesthetic mappings.

  3. A statistical transformation (stat).

  4. A geometric object (geom).

  5. A position adjustment.

标度 Scales

标度控制的是从数据到图形属性的映射。下面是几种标度的例子:

(从左到右依次是连续型变量、离散型变量的形状和颜色标度)

(具体见第六章)

坐标系 Coordinate System

坐标系(简称coord)是指数据映射所在的图表平面,位置通常由两个坐标(x, y)决定。

坐标系的不同类型如下图:

(从左到右依次是笛卡尔坐标系、半对数坐标系、极坐标系)

分面 Facetting

(详见第七章)

= = = = = = = = 我是懵懵的分割线 = = = = = = = =

碎碎念2:这一章看下来感觉干货不多,貌似更像是本书中间的一个过渡章节(也可能是我没有get到,不是很懂作者的用意)。囧。最后还是要放上参考资料,镇楼。


参考资料:

  1. Hadley Wickham(2016). ggplot2. Springer International Publishing. doi: 10.1007/978-3-319-24277-4

  2. 《R语言应用系列丛书·ggplot2:数据分析与图形艺术》

快快和我一起上车,请关注:生信小白学习记

猜你喜欢

  • 热文:1高分文章 2不可或缺的人 3图表规范

  • 一文读懂:1微生物组 2寄生虫益处 3进化树

  • 必备技能:1提问 2搜索  3Endnote

  • 文献阅读 1热心肠 2SemanticScholar 3geenmedical

  • 扩增子分析:1图表解读 2分析流程 3统计绘图  4功能预测

  • 科研经验:1云笔记  2云协作 3公众号

  • 系列教程:1Biostar 2微生物组  3宏基因组

  • 生物科普 1肠道细菌 2人体上的生命 3生命大跃进  4细胞的暗战 5人体奥秘

写在后面

为鼓励读者交流、快速解决科研困难,我们建立了“宏基因组”专业讨论群,目前己有国内外150+ PI,1300+ 一线科研人员加入。参与讨论,获得专业解答,欢迎分享此文至朋友圈,并扫码加主编好友带你入群,务必备注“姓名-单位-研究方向-职称/年级”。技术问题寻求帮助,首先阅读《如何优雅的提问》学习解决问题思路,仍末解决群内讨论,问题不私聊,帮助同行。

学习16S扩增子、宏基因组科研思路和分析实战,关注“宏基因组”

ggplot2笔记4 语法基础相关推荐

  1. 读书笔记(06) - 语法基础 - JavaScript高级程序设计

    写在开头 本篇是小红书笔记的第六篇,也许你会奇怪第六篇笔记才写语法基础,笔者是不是穿越了. 答案当然是没有,笔者在此分享自己的阅读心得,不少人翻书都是从头开始,结果永远就只在前几章. 对此,笔者换了随 ...

  2. 【Java 系列笔记】语法基础 + Spring + Spring MVC + SpringBoot + 数据结构

    Java 强化笔记目录 Java 语言基础 Java 架构师体系课程 一些课程 前端笔记:前端学习笔记 Java 语言基础 回头补基础(此基础非小白)系列,学校教的其实真的就是一些皮毛而已,怕是连门都 ...

  3. JavaSE笔记(语法基础篇)

    文章目录 语法基础篇 第1章 概述 1.1 计算机组成部分 1.2 人机交互方式 1.3 计算机语言 1.4 软件与软件开发 1.5 Java语言介绍 1.6 Java开发环境搭建 1.7 常见错误 ...

  4. Python学习笔记 - Python语法基础

    前言 本篇博文主要介绍Python中的一些最基础的语法,其中包括标识符.关键字.内置函数.变量.常量.表达式.语句.注释.模块和包等内容. 一.标识符.关键字和内置函数 任何一种语言都离不开标识符和关 ...

  5. python语言入门u-Jupyter笔记-Python语法基础(U.1)

    Python学习 一.Python基本语法元素 1.程序设计基本方法 1.计算机的概念:功能性.可编程性: 计算机发展:遵循摩尔定律(集成电路晶体管数量2倍翻); 2.编程语言的执行方式 源代码:计算 ...

  6. python基础语法元素笔记_Jupyter笔记-Python语法基础(U.1)

    Python学习 一.Python基本语法元素 1.程序设计基本方法 1.计算机的概念:功能性.可编程性: 计算机发展:遵循摩尔定律(集成电路晶体管数量2倍翻); 2.编程语言的执行方式 源代码:计算 ...

  7. JavaScript学习笔记01【基础——简介、基础语法、运算符、特殊语法、流程控制语句】

    w3school 在线教程:https://www.w3school.com.cn JavaScript学习笔记01[基础--简介.基础语法.运算符.特殊语法.流程控制语句][day01] JavaS ...

  8. 前端学习笔记之CSS3基础语法与盒模型(二)

    前端学习笔记之 CSS3基础语法与盒模型 CSS3简介 CSS(cascading style sheet,层叠式样式表)是用来给HTML标签添加样式的语言 CSS3是CSS的最新版本,增加了大量的样 ...

  9. 大数据HiveSQL学习笔记三-查询基础语法以及常用函数

    大数据HiveSQL学习笔记三-查询基础语法以及常用函数 一.基础语法 1.SELECT -列名- FROM -表名- WHERE -筛选条件- 如:需要根据城市,性别找出匹配的10个用户 user_ ...

最新文章

  1. 智能网联汽车高精地图白皮书(2020)
  2. CSDN蒋涛提出技术社区三倍速定律,称下一个20年全球开发者数量将过亿
  3. Delphi XE2 之 FireMonkey 入门(35) - 控件基础: TFmxObject: 其它
  4. 有kotlin中的Android项目编译出现 Unresolved reference: R
  5. Linux shell脚本基础学习详细介绍(完整版)一
  6. license 验证服务器唯一机器码_代码审计工具Fortify 17.10及Mac平台license版本
  7. Spring AOP源码解析——AOP动态代理原理和实现方式
  8. LeetCode 2139. 得到目标值的最少行动次数(贪心)
  9. 什么是java dom_java web--DOM
  10. 抖音直播营销实战经验手册
  11. 文末送书 | 数据分析简单入门
  12. 大王——有趣干货集合
  13. 全球名校AI课程库(36)| 辛辛那提大学 · 离散数学课程『MATH1071 Discrete Math』
  14. 打开我的计算机我的文档不见,我电脑桌面上的我的文档不见了,是什么原因造成我的文档不见了呢?是? 爱问知识人...
  15. SAP AFS 升级后由于RETURN PO带来的ARUN程序问题
  16. javafx实现钢笔效果,钢笔笔锋,基于bezier曲线
  17. Filebeat is unable to load the Ingest Node pipelines for the configured modules
  18. R语言作业一:矩估计、极大似然估计、拟合、对数正态分布、泊松分布、负二项分布
  19. 编译原理:理解文法和语文
  20. 阿里云ClickHouse海量数据分析

热门文章

  1. 推荐8款堪称神器的良心软件
  2. 程序员,有没有比较适合的任务管理方式?
  3. 电商直播团队,管理好团队就成功了一半
  4. 远程办公如何保持高效?这群开发者们是这样做的
  5. 分布式概念-分布式系统是什么?
  6. linux常用命令汇总
  7. 爬虫的系统框架组成-资源库
  8. shell中的数值判断
  9. 【swjtu】数据结构实验课程设计_图的关键路径
  10. python 黑白tif提取边界像素坐标_OpenCV GrabCut算法:前景分割和提取