5  Quarto 书稿中的图形的处理

5 章将通过具体的示例展示浮动对象图形的标签与引用.

5.1R生成单个图形示例

这是最为常见的情形, 只涉及一个R的绘图主命令.

#| label: fig-fig5-1
#| fig: TRUE
#| echo: FALSE
#| fig.cap: "`iris`数据集`Petal.Length ~ Species`的箱线图."
boxplot(Petal.Length ~ Species, data = iris,
        ylab = "Petal length", xlab = "Species", col = "gray")

显示为

注释

图形的标签由R代码块中的label: fig-xxx给出, 其中fig是关键字.

5.2R生成两个图形并置或堆叠

R的代码块选项中设置fig-subcap: truefig-subcap加上子图的图例,并添加layout-ncol: 2就可获得二个子图的并置. 例如下面的代码

#| label: fig-fig5-2
#| fig-cap: "`iris`数据集`Petal.Length ~ Species` 的散点图. 右侧的图像中散点类型通过`Species`因子的水平给出,见图例. 直线为数据集拟合线性模型的结果."
#| fig-subcap: 
#|   - "散点图"
#|   - "添加回归线"
#| layout-ncol: 2
plot(Petal.Length ~ Petal.Width, data = iris)
plot(Petal.Length ~ Petal.Width, data = iris,
     pch = c(21, 8, 19)[as.numeric(iris$Species)])
legend("topleft", pch = c(21, 8, 19),
       legend = levels(iris$Species), box.lty = 0)
lm1 <- lm(Petal.Length ~ Petal.Width, data = iris)
abline(lm1)     #在散点图中添加拟合线

在html正常的浏览中得到两个左右并置的图形.

(a) 散点图
(b) 添加回归线
图 5.1: iris数据集Petal.Length ~ Species 的散点图. 右侧的图像中散点类型通过Species因子的水平给出,见图例. 直线为数据集拟合线性模型的结果.

类似地,通过选项layout-nrow: 2就可将二个子图堆叠起来. R代码

#| label: fig-fig5-3
#| fig-cap: "`iris`数据集`Petal.Length ~ Species` 的散点图. 下图的图像中散点类型通过`Species`因子的水平给出,见图例. 直线为数据集拟合线性模型的结果."
#| fig-subcap: 
#|   - "散点图"
#|   - "添加回归线"
#| layout-nrow: 2   
plot(Petal.Length ~ Petal.Width, data = iris)
plot(Petal.Length ~ Petal.Width, data = iris,
     pch = c(21, 8, 19)[as.numeric(iris$Species)])
legend("topleft", pch = c(21, 8, 19),
       legend = levels(iris$Species), box.lty = 0)
lm1 <- lm(Petal.Length ~ Petal.Width, data = iris)
abline(lm1)     #在散点图中添加拟合线

在html正常的浏览中得到两个上下堆叠的图形.

(a) 散点图
(b) 添加回归线
图 5.2: iris数据集Petal.Length ~ Species 的散点图. 下图的图像中散点类型通过Species因子的水平给出,见图例. 直线为数据集拟合线性模型的结果.

5.3 单个静态图形的插入

Quarto中插入本地图形可使用命令. 代码

#| label: fig-fig4-4
#| fig.align: 'center'
#| out.width: '70%'
#| fig.cap: 'R logo'
knitr::include_graphics("figures/Rlogo.png")

给出了R的 logo 图.

5.4 静态图形的并置

::: {#fig-program layout-ncol="3"}
![R](figures/Rlogo.png){#fig-R}

![Python](figures/python.png){#fig-python}

![Julia](figures/julia.png){#fig-julia}

数据科学的编程语言
:::

得到R, PythonJulia三个logo的并置.

(a) R
(b) Python
(c) Julia
图 5.3: 数据科学中的编程语言
注释

静态图形的插入我们可以使用knitr程序包中的命令include_graphics(). 例如上面的代码等价于

5.5 图形引用

图形引用通过R代码块的标签引用, 并带前缀fig-, 例如

 @fig-fig5-2 和图 @fig-fig5-3 为两个图的并置与堆叠.

输出为:

5.1 和 图 5.2 为两个图的并置与堆叠.