教程:计算

概述

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
我们开始的笔记本如下所示。请注意,尚未执行任何单元格。
  1. ---
  2. title: Quarto Computations
  3. jupyter: python3
  4. ---
  5. ## NumPy
  6. ```{python}
  7. import numpy as np
  8. a = np.arange(15).reshape(3, 5)
  9. a

Matplotlib

  1. import matplotlib.pyplot as plt
  2. fig = plt.figure()
  3. x = np.arange(10)
  4. y = 2.5 * np.sin(x / 20 * np.pi)
  5. yerr = np.linspace(0.05, 0.2, 10)
  6. plt.errorbar(x, y + 3, yerr=yerr, label='both limits (default)')
  7. plt.errorbar(x, y + 2, yerr=yerr, uplims=True, label='uplims=True')
  8. plt.errorbar(x, y + 1, yerr=yerr, uplims=True, lolims=True,
  9. label='uplims=True, lolims=True')
  10. upperlimits = [True, False] * 5
  11. lowerlimits = [False, True] * 5
  12. plt.errorbar(x, y, yerr=yerr, uplims=upperlimits, lolims=lowerlimits,
  13. label='subsets of uplims and lolims')
  14. plt.legend(loc='lower right')
  15. plt.show(fig)

Plotly

  1. import plotly.express as px
  2. import plotly.io as pio
  3. gapminder = px.data.gapminder()
  4. gapminder2007 = gapminder.query("year == 2007")
  5. fig = px.scatter(gapminder2007,
  6. x="gdpPercap", y="lifeExp", color="continent",
  7. size="pop", size_max=60,
  8. hover_name="country")
  9. fig.show()
  1. ![](https://cdn.nlark.com/yuque/0/2024/png/39191047/1721718538332-6f8381fc-777a-486f-8cc3-955eed4da708.png)
  2. <font style="color:rgb(52, 58, 64);">接下来,在 Jupyter Lab 中创建一个新终端以用于 Quarto 命令。</font>
  3. ![](https://cdn.nlark.com/yuque/0/2024/png/39191047/1721718538192-876126b1-5c87-42e8-8f44-46e05a585239.png)
  4. <font style="color:rgb(52, 58, 64);">最后,在终端中运行,并将 Jupyter Lab 与显示预览的浏览器并排放置。</font>`<font style="background-color:rgb(248, 249, 250);">quarto preview</font>`
  5. <font style="color:rgb(52, 58, 64);">Terminal</font>
  6. <font style="color:rgb(0, 59, 79);">quarto preview computations.ipynb</font>
  7. ![](https://cdn.nlark.com/yuque/0/2024/png/39191047/1721718538200-94558bea-de54-482e-a437-1bc049083315.png)
  8. <font style="color:rgb(52, 58, 64);">继续运行所有单元格,然后保存笔记本。您将看到预览会立即更新。</font>
  9. ## 电池输出
  10. <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>`
  11. ```plain
  12. ---
  13. title: Quarto Computations
  14. execute:
  15. echo: false
  16. jupyter: python3
  17. ---

数字 - 图1

进行此更改后保存笔记本。预览将更新以显示不带代码的输出。

数字 - 图2

您可能希望有选择地为某些单元格启用代码。为此,请添加单元格选项。用 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 数字 - 图3 保存笔记本,并注意 NumPy 单元格现在包含代码。

数字 - 图4

还有大量其他选项可用于单元格输出,例如显示/隐藏警告(这对于包加载消息特别有用),作为防止任何输出(代码或结果)包含在输出中的捕获所有选项,以及防止代码执行中的错误停止文档的呈现(并在呈现的文档中打印错误)。<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 --- 数字 - 图5 保存笔记本。现在,每个单元格的输出上方都有一个“代码”小部件。

数字 - 图6

您还可以提供对代码折叠的全局控制。尝试添加到 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 --- 数字 - 图7 保存笔记本后,你将看到文档右上角出现一个代码菜单,该菜单提供对显示和隐藏代码的全局控制。

数字 - 图8

  1. ```{python}
  2. #| label: fig-limits
  3. #| fig-cap: "Errorbar limit selector"
  4. import matplotlib.pyplot as plt
  5. fig = plt.figure()
  6. fig.set_size_inches(12, 7)
  1. <font style="color:rgb(52, 58, 64);">让我们改进 Matplotlib 输出的外观。它当然可以更宽,最好提供一个标题和一个标签来交叉引用。</font>
  2. <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>`
  3. ```plain
  4. ```{python}
  5. #| label: fig-limits
  6. #| fig-cap: "Errorbar limit selector"
  7. import matplotlib.pyplot as plt
  8. fig = plt.figure()
  9. fig.set_size_inches(12, 7)
  1. ![](https://cdn.nlark.com/yuque/0/2024/png/39191047/1721718564020-672ed5b9-804b-45d5-889b-14c900dba5b1.png)
  2. <font style="color:rgb(52, 58, 64);">执行单元格以查看更新的绘图。然后,保存笔记本,以便更新 Quarto 预览。</font>
  3. ![](https://cdn.nlark.com/yuque/0/2024/png/39191047/1721718564520-b9e6d7aa-c539-45ee-92c8-aef23ebf37da.png)
  4. ## 多个数字
  5. <font style="color:rgb(52, 58, 64);">Plotly 单元格可视化了一年(2007 年)的 GDP 和预期寿命数据。让我们在它旁边绘制另一年进行比较,并添加标题和副标题。由于这将产生更广泛的可视化效果,因此我们还将使用该选项将其布置在整个页面上,而不是局限于正文文本列。</font>`<font style="background-color:rgb(248, 249, 250);">column</font>`
  6. <font style="color:rgb(52, 58, 64);">这个单元格有很多变化。如果要在本地试用,请将以下代码复制并粘贴到笔记本中。</font>
  7. ```plain
  8. #| label: fig-gapminder
  9. #| fig-cap: "Life Expectancy and GDP"
  10. #| fig-subcap:
  11. #| - "Gapminder: 1957"
  12. #| - "Gapminder: 2007"
  13. #| layout-ncol: 2
  14. #| column: page
  15. import plotly.express as px
  16. import plotly.io as pio
  17. gapminder = px.data.gapminder()
  18. def gapminder_plot(year):
  19. gapminderYear = gapminder.query("year == " +
  20. str(year))
  21. fig = px.scatter(gapminderYear,
  22. x="gdpPercap", y="lifeExp",
  23. size="pop", size_max=60,
  24. hover_name="country")
  25. fig.show()
  26. gapminder_plot(1957)
  27. gapminder_plot(2007)
运行修改后的单元格,然后保存笔记本。预览版将更新如下:

数字 - 图9

让我们讨论一下这里使用的一些新选项。您之前已经看到过,但我们现在添加了一个选项。<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 文档中自定义可执行代码的行为和输出的基础知识。 接下来,查看创作教程,了解有关输出格式和技术写作功能(如引文、交叉引用和高级布局)的更多信息。