教程:计算
概述
Quarto 提供了多种选项来控制代码和计算输出在渲染文档中的显示方式。在本教程中,我们将从一个包含一些数值输出和图表的 .qmd 文件开始,讲解如何应用这些选项。
本教程将使用 matplotlib 和 plotly Python 包。您可以使用下表中的命令来安装它们。
| 平台 | 命令 |
|---|---|
| Mac/Linux | {.bash filename="终端"} | python3 -m pip install jupyter matplotlib plotly pandas |
| Windows | {.powershell filename="终端"} | py -m pip install jupyter matplotlib plotly pandas |
如果您想在自己的环境中一步步跟进,请创建一个 computations.qmd 文件,并将以下内容复制到其中。
---
title: Quarto 计算
jupyter: python3
---
## NumPy
```{python}
import numpy as np
a = np.arange(15).reshape(3, 5)
a
```
## Matplotlib
```{python}
import matplotlib.pyplot as plt
fig = plt.figure()
x = np.arange(10)
y = 2.5 * np.sin(x / 20 * np.pi)
yerr = np.linspace(0.05, 0.2, 10)
plt.errorbar(x, y + 3, yerr=yerr, label='both limits (default)')
plt.errorbar(x, y + 2, yerr=yerr, uplims=True, label='uplims=True')
plt.errorbar(x, y + 1, yerr=yerr, uplims=True, lolims=True,
label='uplims=True, lolims=True')
upperlimits = [True, False] * 5
lowerlimits = [False, True] * 5
plt.errorbar(x, y, yerr=yerr, uplims=upperlimits, lolims=lowerlimits,
label='subsets of uplims and lolims')
plt.legend(loc='lower right')
plt.show(fig)
```
## Plotly
```{python}
import plotly.express as px
import plotly.io as pio
gapminder = px.data.gapminder()
gapminder2007 = gapminder.query("year == 2007")
fig = px.scatter(gapminder2007,
x="gdpPercap", y="lifeExp", color="continent",
size="pop", size_max=60,
hover_name="country")
fig.show()
```现在,打开终端并运行 quarto preview,然后将您的编辑器与显示预览的浏览器并排放置。
终端
quarto preview computations.qmd
单元格输出
源文件中的所有代码都显示在渲染文档中。然而,在某些情况下,您可能希望隐藏所有代码并仅显示输出。让我们在文档的 execute 选项中指定 echo: false,以防止代码被打印出来。
---
title: Quarto 计算
execute:
echo: false
jupyter: python3
---保存文件后进行此更改。预览将更新以显示没有代码的输出。

您可能希望有选择地为某些单元格启用代码 echo。为此,请添加 echo: true 单元格选项。尝试在 NumPy 单元格中使用此选项。
```{python}
#| echo: true
import numpy as np
a = np.arange(15).reshape(3, 5)
a
```保存文件并注意,现在 NumPy 单元格的代码已包含在内。

还有许多其他选项可用于单元格输出,例如 warning 用于显示/隐藏警告(这在显示包加载消息时特别有用),include 作为一个通用的选项,用于防止任何输出(代码或结果)包含在输出中,以及 error 用于防止代码执行错误停止文档的渲染(并在渲染文档中打印错误)。
有关更多详细信息,请参阅 Jupyter 单元格选项 文档。
代码折叠
与其完全隐藏代码,您可能希望将其折叠,并允许读者自行选择查看。您可以通过 code-fold 选项来实现这一点。 删除我们之前添加的 echo 选项,并添加 code-fold HTML 格式选项。
---
title: Quarto 计算
format:
html:
code-fold: true
jupyter: python3
---保存文件。 现在,在每个单元格输出的上方都有一个“代码”小部件。

你还可以提供全局控制代码折叠的功能。 尝试将 code-tools: true 添加到 HTML 格式选项中。
---
title: Quarto 计算
format:
html:
code-fold: true
code-tools: true
jupyter: python3
---保存文件后,你会在文档的右上角看到一个代码菜单,该菜单提供了全局显示和隐藏代码的控制。

图形
让我们改进 Matplotlib 输出的外观。 它肯定可以更宽一些,并且如果能提供一个标题和标签用于交叉引用就更好了。
继续修改 Matplotlib 单元格,以包含 label 和 fig-cap 选项,并调用 fig.set_size_inches() 来设置更大的图形尺寸和更宽的纵横比:
```{python}
#| label: fig-limits
#| fig-cap: "误差条限制选择器"
import matplotlib.pyplot as plt
fig = plt.figure()
fig.set_size_inches(12, 7)
```保存文件以重新渲染并查看更新后的图表:

多个图形
Plotly 单元格可视化了来自单一年份(2007 年)的 GDP 和预期寿命数据。 让我们在旁边绘制另一个年份以进行比较,并添加标题和子标题。 由于这将生成一个更宽的可视化效果,我们还将使用 column 选项将其布局在整个页面上,而不是局限于正文文本列。
这个单元格有很多变化。 如果你想在本地尝试,请将此代码复制并粘贴到 computations.qmd 中:
#| label: fig-gapminder
#| fig-cap: "预期寿命和 GDP"
#| fig-subcap:
#| - "Gapminder: 1957"
#| - "Gapminder: 2007"
#| layout-ncol: 2
#| column: page
import plotly.express as px
import plotly.io as pio
gapminder = px.data.gapminder()
def gapminder_plot(year):
gapminderYear = gapminder.query("year == " +
str(year))
fig = px.scatter(gapminderYear,
x="gdpPercap", y="lifeExp",
size="pop", size_max=60,
hover_name="country")
fig.show()
gapminder_plot(1957)
gapminder_plot(2007)保存文件后,预览将更新如下:

让我们讨论一下这里使用的一些新选项。 你之前见过 fig-cap,但我们现在添加了一个 fig-subcap 选项:
#| fig-cap: "预期寿命和 GDP"
#| fig-subcap:
#| - "Gapminder: 1957"
#| - "Gapminder: 2007"对于具有多个输出的代码单元格,添加 fig-subcap 选项使我们能够将它们视为子图。
我们还添加了一个选项来控制多个图形的布局——在这种情况下,我们指定了并排的两列:
#| layout-ncol: 2如果你在一个面板中有 3 个、4 个或更多的图形,有许多选项可以自定义它们的布局。 详情请参阅文章 图形。
最后,我们添加了一个选项来控制我们的图形占据的页面跨度:
#| column: page这使得我们的图形显示超出了正常的正文文本列。 请参阅 文章布局 的文档,了解所有可用的布局选项。
下一步
您现在已经了解了在Quarto文档中自定义可执行代码的行为和输出的基础知识。
接下来,请查看创作教程,以了解更多关于输出格式和技术写作功能,如引用、交叉引用和高级布局。
VS Code
Jupyter
RStudio
编辑器