用途:为编写 marimo 笔记本提供约定,重点是交互式散点探索界面的搭建方式,适用于新建 marimo 笔记本、选择本地运行方式等场景。
运行方式:使用 marimo edit --host 0.0.0.0 --no-token --sandbox notebook.py 进行编辑;只读应用模式用 marimo run --host 0.0.0.0 --no-token --sandbox notebook.py。--host 0.0.0.0 让局域网内手机、平板或其他电脑可访问;--no-token 跳过 URL 令牌以便链接可粘贴,并使服务注册到本地服务注册表;--sandbox 在由 uv 托管、由文件顶部内联脚本元数据驱动的隔离 venv 中运行。--no-token 仅限可信网络使用,共享网络应保留令牌并用 MARIMO_TOKEN 传递。
沙箱依赖:在笔记本顶部写 PEP 723 脚本元数据(requires-python 与 dependencies 列表),新增导入需同步修改该块,否则沙箱模式会拒绝导入。
散点图:默认使用 jupyter-scatter(import jscatter),GPU 加速、支持海量点、内置套索选择,并通过 traitlets 接入 marimo 响应式图;小型非交互场景才考虑 matplotlib、plotly、altair。显式启用长按触发套索:scatter.lasso(on_long_press=True)。
选中行表格:用 mo.state + .observe(...) 把 jscatter 组件的 selection traitlet 桥接进响应式图,在下一个单元格用 mo.ui.table 按当前选择过滤数据并实时更新。需使用 scatter.widget 而非 scatter 进行 observe 与显示;返回 getter 而非状态值;空选择时显示 pdf.head(0) 而非全表;默认用 mo.ui.table,需要 SQL 式过滤、分面与列统计时用 mo.ui.anywidget(quak.Widget(df))。
限制与注意事项:marimo edit 运行期间不要从外部编辑 .py 文件;--sandbox 按笔记本隔离,不要跨笔记本共享 venv;--no-token 会向局域网暴露笔记本,不可信网络应去掉 --host 0.0.0.0 或保留令牌;组件 traitlets 位于响应式图之外,直接赋值不会流入 marimo 状态,除非已接线 .observe(...)。