

iris
数据集Petal.Length ~ Species
的散点图. 下图的图像中散点类型通过Species
因子的水平给出,见图例. 直线为数据集拟合线性模型的结果.
第 5 章将通过具体的示例展示浮动对象图形的标签与引用.
R
生成单个图形示例这是最为常见的情形, 只涉及一个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
是关键字.
R
生成两个图形并置或堆叠在R
的代码块选项中设置fig-subcap: true
或fig-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正常的浏览中得到两个左右并置的图形.
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正常的浏览中得到两个上下堆叠的图形.
iris
数据集Petal.Length ~ Species
的散点图. 下图的图像中散点类型通过Species
因子的水平给出,见图例. 直线为数据集拟合线性模型的结果.
在Quarto
中插入本地图形可使用命令. 代码
#| label: fig-fig4-4
#| fig.align: 'center'
#| out.width: '70%'
#| fig.cap: 'R logo'
knitr::include_graphics("figures/Rlogo.png")
给出了R
的 logo 图.
::: {#fig-program layout-ncol="3"}
{#fig-R}
{#fig-python}
{#fig-julia}
数据科学的编程语言
:::
得到R
, Python
和Julia
三个logo的并置.
静态图形的插入我们可以使用knitr
程序包中的命令include_graphics()
. 例如上面的代码等价于
图形引用通过R
代码块的标签引用, 并带前缀fig-
, 例如
输出为:
# Quarto 书稿中的图形的处理 {#sec-figures}
第 @sec-figures 章将通过具体的示例展示浮动对象图形的标签与引用.
## 由`R`生成单个图形示例 {#sec-figures-1}
这是最为常见的情形, 只涉及一个`R`的绘图主命令.
```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-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")
```
::: callout-note
图形的标签由`R`代码块中的`label: fig-xxx`给出, 其中`fig`是关键字.
:::
## 由`R`生成两个图形并置或堆叠 {#sec-figures-2}
在`R`的代码块选项中设置`fig-subcap: true`或`fig-subcap`加上子图的图例,并添加`layout-ncol: 2`就可获得二个子图的并置. 例如下面的代码
```r
#| 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正常的浏览中得到两个左右并置的图形.
```{r}
#| 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) #在散点图中添加拟合线
```
类似地,通过选项`layout-nrow: 2`就可将二个子图堆叠起来. `R`代码
```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正常的浏览中得到两个上下堆叠的图形.
```{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) #在散点图中添加拟合线
```
## 单个静态图形的插入 {#sec-figures-3}
在`Quarto`中插入本地图形可使用命令. 代码
```r
#| label: fig-fig4-4
#| fig.align: 'center'
#| out.width: '70%'
#| fig.cap: 'R logo'
knitr::include_graphics("figures/Rlogo.png")
```
给出了`R`的 logo 图.
```{r}
#| label: fig-fig4-4
#| fig.align: 'center'
#| out.width: '70%'
#| fig.cap: 'R logo'
knitr::include_graphics("figures/Rlogo.png")
```
## 静态图形的并置 {#sec-figures-4}
```bash
::: {#fig-program layout-ncol="3"}
{#fig-R}
{#fig-python}
{#fig-julia}
数据科学的编程语言
:::
```
得到`R`, `Python`和`Julia`三个logo的并置.
::: {#fig-program layout-ncol="3"}
{#fig-R}
{#fig-python}
{#fig-julia}
数据科学中的编程语言
:::
::: callout-note
静态图形的插入我们可以使用`knitr`程序包中的命令`include_graphics()`. 例如上面的代码等价于
:::
```{r}
#| label: fig-fig5-6
#| echo: TRUE
#| eval: TRUE
#| fig-cap: "数据科学中的编程语言"
#| fig-subcap:
#| - "R"
#| - "Python"
#| - "Julia"
#| layout-ncol: 3
knitr::include_graphics("figures/Rlogo.png")
knitr::include_graphics("figures/python.png")
knitr::include_graphics("figures/julia2.png")
```
## 图形引用 {#sec5-5}
图形引用通过`R`代码块的标签引用, 并带前缀`fig-`, 例如
```bash
图 @fig-fig5-2 和图 @fig-fig5-3 为两个图的并置与堆叠.
```
输出为:
图 @fig-fig5-2 和 图 @fig-fig5-3 为两个图的并置与堆叠.