Quarto与Python集成使用

本文作为https://blog.csdn.net/Jay_Franklin/article/details/159350499?spm=1001.2014.3001.5501的补充,进一步介绍Quarto的使用方式。本文制作简要的配置使用说明,具体使用方式请参考:https://quarto.org/

Quarto的安装

Quarto的使用并不像一般软件一样,具有UI界面可以打开。Quarto的安装是安装CLI应用,只能通过命令行操作。因此使用Quarto需要与之配合的文本编辑器才可以。Quarto可以与Jupyter notebook、Rstudio等一起使用,如果你使用的是R语言,那么直接使用Rstudio是更便利的选择。如果是使用Python的话,VS code以及Positron在笔者看来都是比较好的选择。由于笔者主要使用的语言是Python,因此IDE选择的是VS code和Positron来配合Quarto使用。这里介绍一下如何配置相应的环境。

在使用VS code时,配置会比Positron复杂一些。Positron可以做到开箱即用的便捷,其内部以及提前集成了对R以及Python以及Quarto的支持。在使用Quarto之前,需要下载Quarto CLI,如下:

网址为:https://quarto.org/docs/get-started/

根据你的操作系统平台选择合适的安装包,按照指引安装即可。接下如果是选择Positron的话,下载安装即可,如果选择的是VS code的话,则需要安装Quarto插件。

安装完毕后创建qmd文件流可以使用了。

Python环境配置

Python的环境配置选择取决你的工作习惯,是基于环境还是基于项目。如果是基于环境的话,这里推荐使用Anaconda或者Miniconda,如果是基于项目的话,推荐使用uv做为保管理器。Anaconda的安装配置教程比较多,笔者也已经从anaconda转为了uv,因此这里只介绍uv来配置python环境。

首先安装uv:https://uv.doczh.com/getting-started/installation/

根据操作系统使用不同的脚本命令进行安装。

安装完毕后在命令行窗口输入uv(有可能需要重启后才行),如果出现下面的界面,则表示安装成功了。

接下来在想要存放文件夹的路径下新建文件夹,在命令行窗口中打开,导航到目标文件夹开始虚拟环境创建。这里也可以直接在IDE中打开终端进行操作,通常更加方便。

例如,创建一个Python3.10的环境以及安装库可以使用如下代码。

bash 复制代码
uv init
uv venv --python 3.10
uv add numpy matplotlib scipy

环境创建完成后,在该目录下创建.qmd的文件,在qmd文件中,你可以使用下面的方式来运行Python代码:

bash 复制代码
```{python}
#| label: heart_shape
#| fig-cap: "The heart formula."

import numpy as np
import matplotlib.pyplot as plt

def draw_euler_heart():
    # 1. 设置角度范围 (0 到 2π)
    theta = np.linspace(0, 2 * np.pi, 1000)
    
    # 2. 定义心形线的极坐标方程: r = a * (1 - cos(theta))
    # 这里取 a = 1
    a = 1
    r = a * (1 - np.cos(theta))
    
    # 3. 利用欧拉公式将极坐标转换为复平面上的点
    # 欧拉公式: e^(i*theta) = cos(theta) + i*sin(theta)
    # 复数点 z = r * (cos(theta) + i*sin(theta))
    z = r * (np.cos(theta) + 1j * np.sin(theta))
    
    # 4. 提取实部(x)和虚部(y)
    x = np.real(z)
    y = np.imag(z)
    
    # 5. 为了让心形看起来是正立的(尖端朝下),我们需要旋转或调整方程
    # 上面的方程默认尖端在原点指向左侧。
    # 标准的心形通常希望尖端朝下。我们可以对坐标进行变换:
    # 交换 x, y 并调整方向,或者直接修改极坐标方程为 r = a * (1 - sin(theta))
    
    # 重新计算:使用 sin 版本可以让尖端自然朝下 (在极坐标中)
    # 但为了保持"欧拉"演示的完整性,我们直接对上面的结果进行旋转和位移
    # 旋转 -90度 (乘以 -i) 并翻转,使其尖端朝下且位于下方
    # 简单做法:直接使用 r = 1 - sin(theta) 更符合视觉习惯的心形
    r_upright = a * (1 - np.sin(theta))
    z_upright = r_upright * (np.cos(theta) + 1j * np.sin(theta))
    
    x_final = np.real(z_upright)
    y_final = np.imag(z_upright)

    # 6. 绘图
    plt.figure(figsize=(8, 8))
    plt.plot(x_final, y_final, color='red', linewidth=2, label=r'$r = 1 - \sin(\theta)$')
    
    # 填充颜色
    plt.fill(x_final, y_final, color='pink', alpha=0.6)
    
    # 设置标题和标签
    plt.title(r"Euler-style Heart (Cardioid) via Complex Plane", fontsize=14)
    plt.xlabel("Real Axis (x)")
    plt.ylabel("Imaginary Axis (y)")
    
    # 设置等比例坐标轴,否则心形会变形
    plt.axis('equal')
    plt.grid(True, linestyle='--', alpha=0.5)
    plt.legend()
    
    # 添加欧拉公式标注
    plt.text(0.5, 0.5, r"$e^{i\theta} = \cos\theta + i\sin\theta$", 
             fontsize=12, color='darkblue', bbox=dict(facecolor='white', alpha=0.8))

    plt.show()

draw_euler_heart()

```

在创建完成代码块后,会在文件中看到一个Run Cell的按钮,点击即可运行这段代码。

也可以点击下面的按钮进行整个文档的预览:

关于qmd文件的写法,参考:https://quarto.org/docs/guide/

接下来,就可以运行Guide里面的一些简单示例了,这里引用里面的一个小的示例:

bash 复制代码
---
title: "Quarto Basics"
format:
  html:
    code-fold: true
jupyter: python3
---

For a demonstration of a line plot on a polar axis, see @fig-polar.

```{python}
#| label: fig-polar
#| fig-cap: "A line plot on a polar axis"

import numpy as np
import matplotlib.pyplot as plt

r = np.arange(0, 2, 0.01)
theta = 2 * np.pi * r
fig, ax = plt.subplots(
  subplot_kw = {'projection': 'polar'} 
)
ax.plot(theta, r)
ax.set_rticks([0.5, 1, 1.5, 2])
ax.grid(True)
plt.show()
```

如果运行成功的话,你应该看到预览部分的内容。

相关推荐
云程笔记3 小时前
004.环境搭建基础篇:Python、CUDA、cuDNN、PyTorch/TensorFlow安装与版本兼容性踩坑
pytorch·python·tensorflow
小成202303202658 小时前
Linux高级02
linux·开发语言
知行合一。。。8 小时前
Python--04--数据容器(总结)
开发语言·python
架构师老Y8 小时前
008、容器化部署:Docker与Python应用打包
python·容器·架构
咸鱼2.08 小时前
【java入门到放弃】需要背诵
java·开发语言
ZK_H8 小时前
嵌入式c语言——关键字其6
c语言·开发语言·计算机网络·面试·职场和发展
A.A呐8 小时前
【C++第二十九章】IO流
开发语言·c++
椰猫子8 小时前
Java:异常(exception)
java·开发语言
lifewange8 小时前
pytest-类中测试方法、多文件批量执行
开发语言·python·pytest
pluvium279 小时前
记对 xonsh shell 的使用, 脚本编写, 迁移及调优
linux·python·shell·xonsh