跳到正文
0 10 20 30 40 50 60 Reaction time (min) 0.0 0.2 0.4 0.6 0.8 1.0 Conversion Reaction kinetics C a t a l y s t   ( k   =   0 . 1 2 5   ) m i n − 1 B l a n k   ( k   =   0 . 0 4 2   ) m i n − 1

Fig1_page.pdf

80 × 57.6 mm

Tavotto for Matplotlib

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

Tavotto 打开的是 matplotlib 已经画好的图:标题、图例、曲线、版面,直接在画布上调。改动单独保存,脚本原样保留。

这就是它印在纸上的尺寸。

选择电脑版本

免费开源 · 纯本地离线运行

Windows 安装说明

在 Windows 上安装

由于开源代码签名证书正在审核中,Windows 可能会弹出 SmartScreen 拦截提示,点击“更多信息”并选择“仍要运行”即可。

所有安装包均通过官方 GitHub Releases 发布并附带 SHA-256 校验码。

装好之后,Tavotto 在你自己的电脑上跑。图和脚本不会上传。

代码签名政策

点中哪里,就看清哪里。

认得图里的每个对象

Tavotto 读到的是 matplotlib 画出来的对象,不是像素。标题、刻度标签、坐标轴、曲线,都能单独点选。

  • axes_0.title 标题
  • axes_0.xlabel 轴标题
  • axes_0.ylabel 轴标题
  • axes_0.lines_0 曲线
  • axes_0.lines_1 曲线
  • axes_0.legend 图例
  • axes_0.xticks 刻度组
  • axes_0.yticks 刻度组

直接在画布上改

拖动位置,改字号、线宽或颜色,matplotlib 随即重画一遍。

在浏览器里试试示例,或者你自己的 .py。

axes_0.title 标题

fontsize

9.0 → 12.0 pt

改动单独保存

每次改动都单独记录,脚本一个字不改。数据更新后在 Tavotto 里重跑脚本,改过的地方自动套回去。

正在还原 1 处修改 完全一致

fig1_kinetics.py

  1. """示例 1:两条动力学曲线 + 图例(最典型的可参数化面板)。
  2. 在 Tavotto 里双击这张图,可以直接点中标题、坐标轴标签、图例、任意一条曲线,
  3. 改字号/颜色/线宽或拖动位置——改动存成 override,本文件一个字都不会被动。
  4. """
  5. import numpy as np
  6. import matplotlib.pyplot as plt
  7. from paper_style import COL_1, PALETTE, save
  8. def main():
  9. t = np.linspace(0, 60, 200)
  10. fast = 1 - np.exp(-t / 8)
  11. slow = 1 - np.exp(-t / 24)
  12. fig, ax = plt.subplots(figsize=(COL_1, COL_1 * 0.72))
  13. ax.plot(t, fast, color=PALETTE[0], lw=1.2, label="Catalyst (k = 0.125 $\\mathrm{min^{-1}}$)")
  14. ax.plot(t, slow, color=PALETTE[1], lw=1.2, ls="--", label="Blank (k = 0.042 $\\mathrm{min^{-1}}$)")
  15. ax.set_xlabel("Reaction time (min)")
  16. ax.set_ylabel("Conversion")
  17. ax.set_title("Reaction kinetics")
  18. ax.set_xlim(0, 60)
  19. ax.set_ylim(0, 1.05)
  20. ax.legend(loc="lower right")
  21. save(fig, "Fig1_kinetics")
  22. if __name__ == "__main__":
  23. main()

fig1-overrides.json

                {  "index": 0,  "patch": {    "gid": "axes_0.title",    "prop": "fontsize",    "value": 12.0  },  "hash_after": "sha256:56591382a70626624a8df4ae9a5a17a9358e0844f65a030f2bd0d36ee6905bb9",  "warnings": [],  "moved_gids": [    "axes_0.title"  ],  "bbox_after": {    "axes_0.title": [      0.32596875,      0.03180555555555542,      0.37306249999999996,      0.06730855305989585    ]  }}
              

毫米级多子图拼版

几张图排在一页上,以毫米计;这一页是 150 × 112.5 mm。缩放一张图,字号跟着缩。

真实排好的版面,150 × 112.5 毫米:(a) 是反应动力学那张图,(b) 是带线性拟合的散点图,(c) 是带误差棒的产率柱状图。
150 × 112.5 mm

150 × 112.5 mm

  • (a) Fig1_kinetics.pdf 80 × 57.6 mm 0.9163
  • (b) Fig2_correlation.pdf 59.0894 × 51.573 mm 0.9646
  • (c) Fig2_yield.pdf 58.4941 × 47.279 mm 0.9745

投稿前检查

字号、线宽和版式有问题,导出前就会提醒。

课题组出版规范 v1 1.0.0

  • error 已清除 (a) (b) (c) 图内文字的最终有效字号 7.72pt 不大于绝对下限 8pt
  • suggestion 已清除 (a) (b) 规范建议 legend_text 的字重为 bold(当前 normal)
  • warn 已清除 (a) (b) (c) 线宽最终有效值 1.20pt 不在规范档位 0.5/0.75/1/1.5pt 上 线宽最终有效值 0.53pt 不在规范档位 0.5/0.75/1/1.5pt 上
  • suggestion 已清除 (a) (b) 坐标轴标题「Conversion」不是规范的「Title (unit)」形式
  • warn 已清除 (a) (b) 图例字号最终有效值 7.72pt 不在规范的 8.5–9pt 之间
  • suggestion 已清除 (a) 2 条曲线全部没有 marker,黑白打印或色觉障碍读者难以区分,可考虑点线图或不同线型
  • suggestion 已清除 (b) 有拟合曲线但没有置信区间填充带——投稿时通常要求给出拟合的不确定度

error 1 · warn 2 · not_verifiable 0 · suggestion 4 · blocking true error 0 · warn 1 · not_verifiable 0 · suggestion 4 · blocking false

  1. 1 raised 12 → 9 pt blocking true
  2. 2 raised 22 → 9.5 / 10 pt blocking false

PDF 与 PNG 同源

PDF 里的文字是真文字,公式也一样;PNG 由同一份 PDF 栅格化,两种格式是同一张图。

  • Fig1_page.pdf 150 × 112.5 mm · 425.2 × 318.9 pt 291 个真实文字字符 · 96.0 KB
  • Fig1_page.png 3544 × 2658 px · 600 dpi 306.2 KB
  • Fig1_page_proof.json 课题组出版规范 v1 1.0.0 error 1 · warn 2 · not_verifiable 0 · suggestion 4 · blocking true

发布短片 33 秒 · 有配乐

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

开源,AGPL-3.0 许可。你用它做出的图与 PDF 完全属于你。

Tavotto 完全开源免费,直接下载即可使用,不需要留下任何信息。我们正在构想一个功能更强的高级版,目前特性、定价与排期都还在评估中。如果你感兴趣,可以留下邮箱——有确切进展时我们会通知你一次,绝无其他打扰。

仅发一次通知,绝无垃圾邮件