开源 · 本机运行 · AGPL-3.0-only

在画布上改图,
脚本一行不动。

Tavotto 打开的是 matplotlib 已经画好的图:标题、图例、曲线、版面,直接在画布上调。改动单独保存,脚本原样保留;导出之前,再按期刊规范检查一遍。

当前稳定版 v0.18.0 · Windows x64 · macOS Apple Silicon · macOS Intel

Tavotto 工作台,正在图 (a) 内部编辑:左栏是它的元素树,标题处于选中;中间是 150 × 112.5 mm 版面上排好的 (a)(b)(c) 三张图,选中的标题带着选框;右栏是标题的属性——内容、衬线、9 pt、颜色与对齐。
选中的是图 (a) 的标题:内容、字体与字号在右边。画出它的脚本 fig1_kinetics.py 在「源文件与高级」里,一个字节没动。

别再为了挪一次图例重跑脚本

投稿前的最后一段路通常是这样:改一行、重跑、看一眼、再改。来回二十遍,而要改的都是些看得见却不好用语言描述的东西——图例往左三毫米、刻度标签小一号、图 (b) 和图 (a) 对齐。

另一条路是把 PDF 拖进矢量编辑器手工收尾。改起来直观,代价是这张图和画出它的代码分了家:数据一更新、图一重出,手工改的那些全部作废。

Tavotto 把这两头接上。打开图、在画布上改、导出。脚本原地不动,改动单独保存,每一步都可撤销。

在图里改

双击一张图,Tavotto 把你的脚本跑一遍,并把那个 matplotlib Figure 留在内存里。从这一刻起你改的就是这张图本身:标题、坐标轴标签、某条刻度、某条曲线、图例、脚本画的箭头——从左边的树里选,或者直接在画布上点——改字号、颜色、字重、线型,或者干脆拖到别处去。

拖和调都是即时的:图跟着光标一帧一帧地动,matplotlib 只在你松手时跑一次定稿。命中判据跟着真实画出来的路径走,而不是外接矩形——点曲线选中的就是曲线,不是它周围那一大片空白。

每一次修改都以 override 的形式记在排版里,下次打开这张图时重新跑一遍脚本再回放上去。想把改动落进磁盘上的图文件,「写回原始文件」是一个显式动作,并且可以按项目整个锁死。

同一个窗口的排版态:左栏素材库列出三个源 PDF 与它们的物理尺寸,中间是排好的版面、其中一张图处于选中状态,右栏是它的位置、毫米尺寸与缩放比例。
排版态:图落在以毫米计的版面上,尺寸就是脚本画出来的尺寸。

导出与投稿前检查

导出 PDF 时,每张原始矢量图按原样整块嵌入,文字仍然是可选中、可搜索的真文字。PNG 与 TIFF 由同一份 PDF 栅格化,位图里的就是 PDF 里的内容。

在写出任何文件之前,Tavotto 会按出版规范 profile 检查一遍,字号一律按最终物理尺寸判。结论分四档:阻断在你明确确认之前不让导出;警告一定展示;无法核验是真的查不了的那些,需要人来看;建议绝不替你做决定。

导出对话框:PDF 与 PNG、600 ppi、默认规范;导出按钮上方是这次运行查出的问题——整张画布 6 条阻断、4 条警告、2 条无法核验、3 条建议。第一组「字号低于硬下限」列出图例、两条图例项与两组刻度,都是 7.33 pt 对 8 pt 的下限,每条带「定位」;阻断问题书面确认之前,导出按钮一直不可用。
导出前的检查:阻断问题书面确认之前,导出按钮一直不可用。

渲染与导出都在你的电脑上

渲染、合成、导出都是本地进程。Tavotto 不会把你的图、脚本、项目文件或科研数据上传到项目维护者运营的任何服务。联网只发生在几类明确的情形:检查更新、你要求准备环境或安装依赖时下载软件包、你主动调用的改图助手,以及你同意之后才发送的匿名用量统计(默认不发)。详见隐私说明。

  • 桌面版自带 Python不需要自己装 Python;安装包内置常用科学栈,装完即可渲染。
  • 支持的系统Windows x64;macOS Apple Silicon(macOS 14.0 及以上);macOS Intel(macOS 15.0 及以上)。
  • Linux 与 Windows ARMLinux 没有安装包,可经 PyPI 在浏览器里用(Beta);Windows ARM 未构建、未验证。

也可以从 AI 编程助手里用

Tavotto 提供 Codex 插件,也有面向 Cursor、Claude Code 等 AI 编辑器的接入方式(实验阶段)。这些内容变化较快,请以项目 README 为准:README.zh-CN(GitHub)。