+ - 0:00:00
Notes for current slide
Notes for next slide

量化金融与金融编程

L03 rmarkdown 与 Quarto


曾永艺

厦门大学管理学院


2023-10-07

1 / 26

Your data has a story.

3 / 26

Your data has a story.

Yes!

3 / 26

Your data has a story.

Yes!


Tell it with R markdown / Quarto.

3 / 26

Your data has a story.

Yes!


Tell it with R markdown / Quarto.

🤔 Why? & How?

3 / 26

{{R Markdown}} -> rmarkdown 2.25

Dynamic Documents for R

4 / 26

{{R Markdown}} -> rmarkdown 2.25

Dynamic Documents for R

  • R Markdown 为数据科学提供了一种统一的写作框架,可以集成代码、输出结果和文本说明

  • R Markdown 文档是可复现的(reproducible

  • R Markdown 主体使用 Markdown 撰写,并利用 {{Pandoc}}knitr 后的 文档转换为目标输出格式并进行样式渲染,支持包括 html、PDF、Word、幻灯片、仪表盘图表、shiny 应用、期刊论文、书籍、网站等静态或动态的展示

4 / 26

{{R Markdown}} -> rmarkdown 2.25

Dynamic Documents for R

  • R Markdown 为数据科学提供了一种统一的写作框架,可以集成代码、输出结果和文本说明

  • R Markdown 文档是可复现的(reproducible

  • R Markdown 主体使用 Markdown 撰写,并利用 {{Pandoc}}knitr 后的 文档转换为目标输出格式并进行样式渲染,支持包括 html、PDF、Word、幻灯片、仪表盘图表、shiny 应用、期刊论文、书籍、网站等静态或动态的展示

4 / 26

{{      1.3.433}}

Open source tools for scientific and technical publishing

5 / 26

{{      1.3.433}}

Open source tools for scientific and technical publishing


  • Author using Jupyter notebooks or with plain text markdown in your favorite editor.

  • Create dynamic content with Python, R, Julia, and Observable.

  • Publish reproducible, production quality articles, presentations, websites, blogs, and books in HTML, PDF, MS Word, ePub, and more.

  • Write using Pandoc markdown, including equations, citations, crossrefs, figure panels, callouts, advanced layout, and more.

  • Share knowledge and insights organization-wide by publishing to Posit Connect, Confluence, or other publishing systems.

5 / 26

{{      1.3.433}}

Open source tools for scientific and technical publishing

6 / 26

{{      1.3.433}}

Open source tools for scientific and technical publishing

6 / 26

>> YAML 文件头

  • YAML 文件头处于两个 --- 之间
  • YAMLYAML Ain't Markup Language,易于读写的层次化数据
  • 利用 YAML 文件头提供 metadata 并控制文档渲染和样式等方面的参数
8 / 26

>> YAML 文件头

  • YAML 文件头处于两个 --- 之间
  • YAMLYAML Ain't Markup Language,易于读写的层次化数据
  • 利用 YAML 文件头提供 metadata 并控制文档渲染和样式等方面的参数
---
title: "Penguins, meet Quarto!"
subtitle: 企鹅遇上Quarto!💘
author: "曾永艺"
date: today
format:
html:
toc: true
code-fold: true
editor: visual
---
8 / 26

>> YAML 文件头

  • YAML 文件头处于两个 --- 之间
  • YAMLYAML Ain't Markup Language,易于读写的层次化数据
  • 利用 YAML 文件头提供 metadata 并控制文档渲染和样式等方面的参数
---
title: "Penguins, meet Quarto!"
subtitle: 企鹅遇上Quarto!💘
author: "曾永艺"
date: today
format:
html:
toc: true
code-fold: true
editor: visual
---
---
title: "量化金融与金融编程"
subtitle: "L03 `rmarkdown` 与 Quarto"
author: "<br>曾永艺"
institute: "厦门大学管理学院"
date: "<br>2023-10-07"
output:
xaringan::moon_reader:
css: [libs/zen-styles-v2.3-rev.css]
lib_dir: libs
chakra: libs/remark-latest.min.js
nature:
ratio: '16:9'
highlightLines: true
countIncrementalSlides: false
---

?xaringan::moon_reader

8 / 26

>> Markdown 文本

  • {{扩展的 Markdown 语法}} 来撰写说明性文本(是用来格式化纯文本文件的轻量级语法,其设计哲学就是使得文本既容易写又容易读)。
9 / 26

>> Markdown 文本

  • {{扩展的 Markdown 语法}} 来撰写说明性文本(是用来格式化纯文本文件的轻量级语法,其设计哲学就是使得文本既容易写又容易读)。

9 / 26

>> Markdown 文本

  • {{扩展的 Markdown 语法}} 来撰写说明性文本(是用来格式化纯文本文件的轻量级语法,其设计哲学就是使得文本既容易写又容易读)。

9 / 26

>> 代码块

  1. 插入代码块:使用快捷键 Ctrl+Alt+I(也可使用编辑器工具栏上的 Insert 按钮 或者 手工输入代码段标记符```{r}```
  2. 设置代码块标签名和{{代码块选项}}(也可在通过 knitr::opts_chunk$set() 或者 YAML 文件头设置全局选项——当同个选项多处设置时,局部设置优先),善用RStudio智能补全功能
  3. 编写 代码
  4. 运行代码:使用快捷键 Ctrl+Shift+Enter | Ctrl+Enter 或者 点击按钮
10 / 26

>> 代码块

  1. 插入代码块:使用快捷键 Ctrl+Alt+I(也可使用编辑器工具栏上的 Insert 按钮 或者 手工输入代码段标记符```{r}```
  2. 设置代码块标签名和{{代码块选项}}(也可在通过 knitr::opts_chunk$set() 或者 YAML 文件头设置全局选项——当同个选项多处设置时,局部设置优先),善用RStudio智能补全功能
  3. 编写 代码
  4. 运行代码:使用快捷键 Ctrl+Shift+Enter | Ctrl+Enter 或者 点击按钮

10 / 26

>> 代码块

  1. 插入代码块:使用快捷键 Ctrl+Alt+I(也可使用编辑器工具栏上的 Insert 按钮 或者 手工输入代码段标记符```{r}```
  2. 设置代码块标签名和{{代码块选项}}(也可在通过 knitr::opts_chunk$set() 或者 YAML 文件头设置全局选项——当同个选项多处设置时,局部设置优先),善用RStudio智能补全功能
  3. 编写 代码
  4. 运行代码:使用快捷键 Ctrl+Shift+Enter | Ctrl+Enter 或者 点击按钮

  • 行内代码
这份数据中包含了`r nrow(diamonds)`颗钻石的信息。其中只有`r nrow(diamonds) - nrow(smaller)`颗
钻石大于2.5克拉。其余钻石的分布如下图所示。
10 / 26

>> 工作流

  1. 创建(通用的)项目文件夹

  2. 打开新的 .qmd 文档:File > New File > Quarto Document ...

    • Document | Presentation | Interactive

    • 修改 Title 和 Author,设置输出格式为 Html、Engine 为 Knitr

  3. 存盘 ↔ 根据需要编辑修改模板文档

  4. Render .qmd 文档,生成目标输出文档

  5. 在 RStudio 窗口中预览结果

  6. 在 Background Jobs 窗口中检查文档创建过程记录

  7. 使用和 .qmd 文档一并存储的目标输出文档

  8. 将报告发布到网络服务器(可选步骤)


12 / 26

>> {{tufte0.13}}

20 / 26

>> {{xaringan0.28}}

Creating HTML5 presentations with remark.js through R Markdown.

21 / 26

>> {{xaringan0.28}}

Creating HTML5 presentations with remark.js through R Markdown.

21 / 26

>> {{xaringan0.28}}

Creating HTML5 presentations with remark.js through R Markdown.

21 / 26

>> {{xaringanthemer0.4.2}}   和 {{xaringanExtra0.7.0}}

# install.packages("xaringanthemer")
---
output:
xaringan::moon_reader:
css: xaringan-themer.css
---
```{r xaringan-themer, include=FALSE, warning=FALSE}
library(xaringanthemer)
style_duo_accent(
primary_color = "#1381B0", secondary_color = "#FF961C",
inverse_header_color = "#FFFFFF",
header_font_google = google_font("Josefin Sans"),
text_font_google = google_font("Montserrat", "300", "300i"),
code_font_google = google_font("Fira Mono")
)
```
22 / 26

>> {{xaringanthemer0.4.2}}   和 {{xaringanExtra0.7.0}}

# install.packages("xaringanthemer")
---
output:
xaringan::moon_reader:
css: xaringan-themer.css
---
```{r xaringan-themer, include=FALSE, warning=FALSE}
library(xaringanthemer)
style_duo_accent(
primary_color = "#1381B0", secondary_color = "#FF961C",
inverse_header_color = "#FFFFFF",
header_font_google = google_font("Josefin Sans"),
text_font_google = google_font("Montserrat", "300", "300i"),
code_font_google = google_font("Fira Mono")
)
```

xaringanExtra: A playground of enhancements and extensions for xaringan

  • Add an overview of your presentation with tile view 🗺
  • Make your slides editable 📝
  • Share your slides in style with share again 📼
  • Broadcast your slides in real time to viewers with broadcast 📡
  • Scribble on your slides during your presentation with scribble 👩‍🎨
  • Announce slide changes with a subtle tone 🔊
  • Animate slide transitions with animate.css 📽
  • Add tabbed panels to slides with panelset 🗂
  • Add a logo to all of your slides with logo 💌
  • Add a search box to search through your slides with search 🔍
  • Use the Tachyons CSS utility toolkit 🏗
  • Add a live video feed of your webcam 🤳
  • Add one-click code copying with clipboard 📋
  • Always play gifs from the start with freezeframe ⏸️
  • Fit your slides to fill the browser window 📐
  • Add extra CSS styles 😎
22 / 26

参考资料与课后作业

23 / 26

相信同学们现在对 rmarkdown 和 Quarto 有了初步的认识,下面列出一些学习资料,同学们可进一步学习精进 🏆



24 / 26

>> 课后作业

自由组队,两人一组,共同完成课后作业:

25 / 26

>> 课后作业

自由组队,两人一组,共同完成课后作业:

🕐 从 L02 课件中挑出 3 ~ 4 个你们感兴趣的数据可视化代码段,就其制作两种类型的展示文档:

  1. {{Quarto|HTML}}{{prettydoc}} -> 📂 L03_HW/docs/

  2. {{Quarto|Revealjs}}{{xaringan}} -> 📂 L03_HW/slides/

25 / 26

>> 课后作业

自由组队,两人一组,共同完成课后作业:

🕐 从 L02 课件中挑出 3 ~ 4 个你们感兴趣的数据可视化代码段,就其制作两种类型的展示文档:

  1. {{Quarto|HTML}}{{prettydoc}} -> 📂 L03_HW/docs/

  2. {{Quarto|Revealjs}}{{xaringan}} -> 📂 L03_HW/slides/

🕑 记得多尝试各种选项设置,同时在文档内加上相应的说明性文字(如解释代码或输出图形,其余内容可自由发挥,丰俭由人啦 😁)

25 / 26

>> 课后作业

自由组队,两人一组,共同完成课后作业:

🕐 从 L02 课件中挑出 3 ~ 4 个你们感兴趣的数据可视化代码段,就其制作两种类型的展示文档:

  1. {{Quarto|HTML}}{{prettydoc}} -> 📂 L03_HW/docs/

  2. {{Quarto|Revealjs}}{{xaringan}} -> 📂 L03_HW/slides/

🕑 记得多尝试各种选项设置,同时在文档内加上相应的说明性文字(如解释代码或输出图形,其余内容可自由发挥,丰俭由人啦 😁)

🕒 作业共同署名(author: 姓名 + 姓名

25 / 26

>> 课后作业

自由组队,两人一组,共同完成课后作业:

🕐 从 L02 课件中挑出 3 ~ 4 个你们感兴趣的数据可视化代码段,就其制作两种类型的展示文档:

  1. {{Quarto|HTML}}{{prettydoc}} -> 📂 L03_HW/docs/

  2. {{Quarto|Revealjs}}{{xaringan}} -> 📂 L03_HW/slides/

🕑 记得多尝试各种选项设置,同时在文档内加上相应的说明性文字(如解释代码或输出图形,其余内容可自由发挥,丰俭由人啦 😁)

🕒 作业共同署名(author: 姓名 + 姓名

🕓 确认两份文档运行无误后将文件夹📂 L03_HW 打包为 .zip 格式压缩文档,由其中一位同学于2023年10月15日22:00前将压缩包提交至 {{坚果云链接}}

25 / 26
Paused

Help

Keyboard shortcuts

, , Pg Up, k Go to previous slide
, , Pg Dn, Space, j Go to next slide
Home Go to first slide
End Go to last slide
Number + Return Go to specific slide
b / m / f Toggle blackout / mirrored / fullscreen mode
c Clone slideshow
p Toggle presenter mode
t Restart the presentation timer
?, h Toggle this help
oTile View: Overview of Slides
Esc Back to slideshow