USYD悉尼大学DATA 2002 【R语言学习2】在 Tidyverse 中与数据通信 (Communicating with Data in the Tidyverse)


前言

本章介绍了如何使用 ggplot2 主题里的功能制作出高质量的图形,也介绍了 tidyverse 里使用RMarkdown 和 CSS生成好看精美的自定义式报告。

小编尽最大努力,将抽象的代码知识,用通俗易懂的语言表示出来,让你们更轻松的学到coding!

时间紧,任务重,可能会出现一些错误。如果你有一双火眼金睛,请你找出他们!私信我或者在文章下面评论。如果你觉得有更好的方法去讲某个知识点,也可以私信或者评论。我很乐意接受你们的意见和想法。

下载链接(待更新)

最近小编任务量有点大,我会尽快补齐。请谅解!


1 自定义 ggplot2 主题 (Custom ggplot2 themes)

在这单元,您将先了解数据之间的关系,然后探索可视化报告

1.1 开发数据

1.1.1 连接两个数据集

dplyr包中,可以通过 inner_join() 函数,连接两个数据集。
RDocumentinner_join()
tidyverse Cheat Sheettidyverse备忘单

inner_join(x , y , by = NULL , on = NULL)

1.1.2 过滤数据

dplyr包中,可以使用 filter() 函数,过滤一些不想要的数据。其中,在 filter() 函数中可以添加 %in% 来识别元素(例如,数字)是否属于向量或数据帧。
link1:How to use %in% in R: 7 Example Uses of the Operator

link2:filter: Return rows with matching conditions

> x<-data.frame(id=1:6,
+               name=c("wang","zhang","li","chen","zhao","song"),
+               shuxue=c(89,85,68,79,96,53),
+               yuwen=c(77,68,86,87,92,63))
> x
  id  name shuxue yuwen
1  1  wang     89    77
2  2 zhang     85    68
3  3    li     68    86
4  4  chen     79    87
5  5  zhao     96    92
6  6  song     53    63)


> filter(x,name=="zhang")
  id  name shuxue yuwen
1  2 zhang     85    68
> a <- seq(1, 5)
> b <- seq(3, 12)
> 
> a %in% b
[1] FALSE FALSE  TRUE  TRUE  TRUE

1.1.3 统计汇总数据

dplyr 包中,我们可以使用 group_by()summarize() 汇总统计数据。
小Tips:
1. 记住是 summarize() 函数而不是 summarise() 函数
2. group_by() 为分组函数,是如果我们添加了 group_by() 函数后,我们可以理解为电脑自动给我们的数据进行了按照我们指定的列进行了分组整合,该函数通常和 summarize() 函数合在一起使用,也可以和 filter()select() 函数合在一起使用。
link1: group_by: Group by one or more variables
link2: summarize()

group_by(.data, ..., add = FALSE)
> library(dplyr)
> x<-data.frame(id=1:6,
+               name=c("wang","zhang","li","chen","zhao","song"),
+               shuxue=c(89,85,68,79,96,53),
+               yuwen=c(77,68,86,87,92,63))
> x
  id  name shuxue yuwen
1  1  wang     89    77
2  2 zhang     85    68
3  3    li     68    86
4  4  chen     79    87
5  5  zhao     96    92
6  6  song     53    63

> summarise(x,sum(shuxue))
  sum(shuxue)
1         470

> summarise(group_by(x,name),sum(shuxue))
# A tibble: 6 × 2
  name  `sum(shuxue)`
  <chr>         <dbl>
1 chen             79
2 li               68
3 song             53
4 wang             89
5 zhang            85
6 zhao             96

1.2 绘制基本散点图

通过以上数据的基本处理,我们能得到想要的数据,下面就是激动人心的绘图了。
ggplot2 包里,可以使用 geom_point() 来绘制基本散点图。
link: geom_point()

ggplot(数据) +
  geom_point()

1.2.1 绘图添加标签

在绘图中,可以添加标签来增加美观和增强可视化图片的可读性。
可以使用 labs() 函数添加不同的标签。
link: labs: Modify axis, legend, and plot labels

ggplot() + 
  geom_point() +
  labs(x = aaaaaa , 
       y = bbbbbb ,
       title = cccccc , 
       subtitle = dddddd , 
       caption = eeeeee)

1.3 ggplot 主题

ggplot2 中有一些独特的主题可以使用,这可以让你的可视化变得非常漂亮。
link: theme
我使用最小的主题作为例子。

ggplot() +
  geom_point() +
  theme_minimal()

上面的是 theme_minimal() 效果,下面是系统自动生成的效果。
在这里插入图片描述

1.3.1 自定义theme生成

除了系统格式之外,还可以自定义 theme() 更改绘图的不同样式属性来调整绘图。
link: Modify components of a theme
例子:

ggplot()+
  geom_point() +
  theme_minimal() +
  theme(
        text = element_text(family = "Bookman") ,
        title = element_text(color = "blue") , 
        plot.caption = element_text(color = "red") ,
        plot.subtitle = element_text(size = 11))

# 更多参数用法请参考上面的link

2 创建自定义和独特的可视化 (Creating a custom and unique visualization)

条形图、散点图和直方图可能是最常见和最有效的数据可视化。然而,有时,甚至有更好的方法可以直观地突出您想要与观众交流的发现。所谓的“点图”让我们更好地掌握和理解数据的变化:例如,随着时间的推移而发展。在本章中,您将构建一个自定义且独特的可视化,以强调和解释您想要讲述的故事的一个方面。

2.1 在plot里添加情节

ggplot 中可以使用 facet_grid() 添加一些分面。
link: Lay out panels in a grid

library("ggplot2")
p1 <- ggplot(iris, aes(x =Species , y = Sepal.Length))+
  geom_point()

p1 + facet_grid(. ~Species )

在这里插入图片描述

2.2 定义自己的主题功能

可以通过 function() 函数自定义theme主题。
例子:在 theme_minimal() 主题上添加更多的细节内容。

library("ggplot2")

my_theme <- function(){
  theme_minimal() +
  theme(
    text = element_text(color = "gray25"),
    plot.subtitle = element_text(size = 9),
     plot.title = element_text(size = 18)
  )
}

p1 <- ggplot(iris, aes(x =Species , y = Sepal.Length))+
  geom_point() +
  my_theme() +
  labs(title = "aaaaa",
       subtitle = "bbbbb")
p1

在这里插入图片描述

2.3 连接观察

ggplot 中 我们可以使用 geom_path() 函数创建点图的基本结构。
link: Connect observations

ggplot(iris) +
  geom_path(aes(x = Sepal.Length , y = Species))

在这里插入图片描述

2.3.1 在线条上添加剪头

很多时候需要再图片的线条上添加剪头,来表示方向。我们可以使用 arrow() 函数,有两个参数 lengthtype
link: arrow: Describe arrows to add to a line.

ggplot(iris) +
  geom_path(aes(x = Sepal.Length , y = Species),
            arrow = arrow(length = unit(3 ,'mm'),
                          type = "closed"))

在这里插入图片描述

3 介绍Rmarkdown (Introduction to RMarkdown)

过去,研究人员和数据分析师过去常常在 R 中生成绘图,然后繁琐地将它们复制到他们的 LaTeX 或 Word 文档中。如今,可以使用 RMarkdown 语言从 R 和 RStudio 中生成和复制整个报告——结合 R 块、格式化散文、表格和情节。在本章中,您将获得以前的发现、结果和图形,并将它们整合到这样的报告中,以讲述需要讲述的故事。

3.1 文档的结构

在做RMarkdown时,首先要确定文档的结构。

小Tip: 请注意,在表示标题和文本的符号之间包含一个空格是一个好习惯!这使您的 Markdown 语法保持良好和可读性。

---
title: "aaaaaaaaa"
subtitle: "bbbbbbbbbbb"
author: "ccccccccccc"
output: "ddddddddddd"
---

3.2 文档分级

在报告中要生成不同的级别目录,可以使用 # , ## , ###

# 这是一级
## 这是二级
### 藏式三级

3.3 更改格式

在Rmarkdown中有很多的格式选项,粗体 **aaaaa** , 斜体 *bbbbb*

**这是粗体**
*这是斜体*

3.4 代码块

在R中添加代码块是非常重要的一部分,我们可以使用以下方法:
在这里插入图片描述

4 自定义您的 RMarkdown 报告 (Customizing your RMarkdown report)

您的老板、您的客户或您的教授通常希望您的结果准确并以清晰简洁的结构呈现。但是,在此基础上提供格式良好且独特的报告肯定是一个加分项,并且可以自定义 RMarkdown 来实现此目的。

4.1 更改整体报告外观

在YAML标头中,可以指定自定义主题改变外观

---
title: "aaaaaaaaa"
subtitle: "bbbbbbbbbbb"
author: "ccccccccccc"
output: 
  html_document:
    theme: cosmo
    lighlight: monochrome
---

4.2 添加目录

RMarkdown 报告(无论是 HTML 还是 PDF)的另一个很酷的功能是自动生成的目录 (TOC)。通过多种设置,您可以自定义您的 TOC:

添加toc目录:toc : true ,设置跟随一起浮动:toc_float: true ,设置深度: toc_depth : 4

---
title: "aaaaaaaaa"
subtitle: "bbbbbbbbbbb"
author: "ccccccccccc"
output: 
  html_document:
    toc: true
    toc_float: true
    toc_depth: 4
---

小结

part3和part4的部分不是重点,所以讲的不是很细致,更多内容细节的在Google里搜索就行,不是什么难点知识。后期会单独拿出来一章节讲这个知识点。
代码部分多多练习,多花费时间了解一下,也要多实践。
下一部分会更新Module1 的几个test内容和基础的R代码知识。

Final 加油 ! ALL HD ! 全员HD !

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值