教程:计算
概述
Quarto 具有多种选项可用于控制代码和计算输出在呈现文档中的显示方式。在本教程中,我们将使用一个包含一些数值输出和绘图的简单笔记本,并介绍如何应用这些选项。
如果要在自己的环境中逐步操作,请下载以下笔记本:
下载 computations.ipynb
然后,创建一个要在其中工作的新目录,并将笔记本复制到此目录中。
完成此操作后,在终端中切换到此目录,安装笔记本依赖项(如有必要),然后打开 Jupyter Lab 以开始使用笔记本。下表给出了可用于安装和打开 Jupyter Lab 的命令。
平台 |
命令 |
Mac/Linux操作系统 |
Terminal
plain python3 -m pip install jupyter matplotlib plotly pandas python3 -m jupyter lab computations.ipynb |
窗户 |
Terminal
plain py -m pip install jupyter matplotlib plotly pandas py -m jupyter lab computations.ipynb |
我们开始的笔记本如下所示。请注意,尚未执行任何单元格。
---
title: Quarto Computations
jupyter: python3
---
## NumPy
```{python}
import numpy as np
a = np.arange(15).reshape(3, 5)
a
Matplotlib
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
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()
![](https://cdn.nlark.com/yuque/0/2024/png/39191047/1721718538332-6f8381fc-777a-486f-8cc3-955eed4da708.png)
<font style="color:rgb(52, 58, 64);">接下来,在 Jupyter Lab 中创建一个新终端以用于 Quarto 命令。</font>
![](https://cdn.nlark.com/yuque/0/2024/png/39191047/1721718538192-876126b1-5c87-42e8-8f44-46e05a585239.png)
<font style="color:rgb(52, 58, 64);">最后,在终端中运行,并将 Jupyter Lab 与显示预览的浏览器并排放置。</font>`<font style="background-color:rgb(248, 249, 250);">quarto preview</font>`
<font style="color:rgb(52, 58, 64);">Terminal</font>
<font style="color:rgb(0, 59, 79);">quarto preview computations.ipynb</font>
![](https://cdn.nlark.com/yuque/0/2024/png/39191047/1721718538200-94558bea-de54-482e-a437-1bc049083315.png)
<font style="color:rgb(52, 58, 64);">继续运行所有单元格,然后保存笔记本。您将看到预览会立即更新。</font>
## 电池输出
<font style="color:rgb(52, 58, 64);">笔记本中的所有代码都显示在呈现的文档中。但是,对于某些文档,您可能希望隐藏所有代码,而只显示输出。让我们继续在文档选项中指定以防止打印代码。</font>`<font style="background-color:rgb(248, 249, 250);">echo: false</font>``<font style="background-color:rgb(248, 249, 250);">execute</font>`
```plain
---
title: Quarto Computations
execute:
echo: false
jupyter: python3
---
进行此更改后保存笔记本。预览将更新以显示不带代码的输出。
您可能希望有选择地为某些单元格启用代码。为此,请添加单元格选项。用 NumPy 单元格试试这个。<font style="background-color:rgb(248, 249, 250);">echo</font>``<font style="background-color:rgb(248, 249, 250);">echo: true</font>
plain
{python}
#| echo: true
import numpy as np
a = np.arange(15).reshape(3, 5)
a
保存笔记本,并注意 NumPy 单元格现在包含代码。
还有大量其他选项可用于单元格输出,例如显示/隐藏警告(这对于包加载消息特别有用),作为防止任何输出(代码或结果)包含在输出中的捕获所有选项,以及防止代码执行中的错误停止文档的呈现(并在呈现的文档中打印错误)。<font style="background-color:rgb(248, 249, 250);">warning</font>``<font style="background-color:rgb(248, 249, 250);">include</font>``<font style="background-color:rgb(248, 249, 250);">error</font>
有关更多详细信息,请参阅 Jupyter 单元格选项文档。
代码折叠
与其完全隐藏代码,不如将其折叠并允许读者自行查看。您可以通过该选项执行此操作。删除我们之前添加的选项并添加 HTML 格式选项。<font style="background-color:rgb(248, 249, 250);">code-fold</font>``<font style="background-color:rgb(248, 249, 250);">echo</font>``<font style="background-color:rgb(248, 249, 250);">code-fold</font>
plain
---
title: Quarto Computations
execute:
code-fold: true
jupyter: python3
---
保存笔记本。现在,每个单元格的输出上方都有一个“代码”小部件。
您还可以提供对代码折叠的全局控制。尝试添加到 HTML 格式选项。<font style="background-color:rgb(248, 249, 250);">code-tools: true</font>
plain
---
title: Quarto Computations
execute:
code-fold: true
code-tools: true
jupyter: python3
---
保存笔记本后,你将看到文档右上角出现一个代码菜单,该菜单提供对显示和隐藏代码的全局控制。
```{python}
#| label: fig-limits
#| fig-cap: "Errorbar limit selector"
import matplotlib.pyplot as plt
fig = plt.figure()
fig.set_size_inches(12, 7)
<font style="color:rgb(52, 58, 64);">让我们改进 Matplotlib 输出的外观。它当然可以更宽,最好提供一个标题和一个标签来交叉引用。</font>
<font style="color:rgb(52, 58, 64);">继续修改 Matplotlib 单元格以包含和选项,以及调用以设置具有更宽纵横比的更大图形大小。</font>`<font style="background-color:rgb(248, 249, 250);">label</font>``<font style="background-color:rgb(248, 249, 250);">fig-cap</font>``<font style="background-color:rgb(248, 249, 250);">fig.set_size_inches()</font>`
```plain
```{python}
#| label: fig-limits
#| fig-cap: "Errorbar limit selector"
import matplotlib.pyplot as plt
fig = plt.figure()
fig.set_size_inches(12, 7)
![](https://cdn.nlark.com/yuque/0/2024/png/39191047/1721718564020-672ed5b9-804b-45d5-889b-14c900dba5b1.png)
<font style="color:rgb(52, 58, 64);">执行单元格以查看更新的绘图。然后,保存笔记本,以便更新 Quarto 预览。</font>
![](https://cdn.nlark.com/yuque/0/2024/png/39191047/1721718564520-b9e6d7aa-c539-45ee-92c8-aef23ebf37da.png)
## 多个数字
<font style="color:rgb(52, 58, 64);">Plotly 单元格可视化了一年(2007 年)的 GDP 和预期寿命数据。让我们在它旁边绘制另一年进行比较,并添加标题和副标题。由于这将产生更广泛的可视化效果,因此我们还将使用该选项将其布置在整个页面上,而不是局限于正文文本列。</font>`<font style="background-color:rgb(248, 249, 250);">column</font>`
<font style="color:rgb(52, 58, 64);">这个单元格有很多变化。如果要在本地试用,请将以下代码复制并粘贴到笔记本中。</font>
```plain
#| label: fig-gapminder
#| fig-cap: "Life Expectancy and 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)
运行修改后的单元格,然后保存笔记本。预览版将更新如下:
让我们讨论一下这里使用的一些新选项。您之前已经看到过,但我们现在添加了一个选项。<font style="background-color:rgb(248, 249, 250);">fig-cap</font>``<font style="background-color:rgb(248, 249, 250);">fig-subcap</font>
plain
#| fig-cap: "Life Expectancy and GDP"
#| fig-subcap:
#| - "Gapminder: 1957"
#| - "Gapminder: 2007"
对于具有多个输出的代码单元,添加该选项使我们能够将它们视为子图。<font style="background-color:rgb(248, 249, 250);">fig-subcap</font>
我们还添加了一个选项来控制多个图形的布局方式 - 在本例中,我们在两列中并排指定。
#| layout-ncol: 2
如果面板中有 3 个、4 个或更多图形,则有许多选项可用于自定义其布局。有关详细信息,请参阅有关图的文章。
最后,我们添加了一个选项来控制数字所占据的页面跨度。
#| column: page
这允许我们的图形显示超出正常的正文文本列。请参阅有关文章布局的文档,了解所有可用的布局选项。
下一步
现在,您已经介绍了在 Quarto 文档中自定义可执行代码的行为和输出的基础知识。
接下来,查看创作教程,了解有关输出格式和技术写作功能(如引文、交叉引用和高级布局)的更多信息。