投研材料、数据周报与增长看板往往既要交互,也要可嵌入的静态 PNG。真正卡交付的不是「能不能导出」,而是像素合同、透明通道与色彩意图由谁背书。本文给出 2026 年可用的选型对照表、可复制参数(dpi、figsize、transparent、MPLBACKEND、write_image / Kaleido、以及合成链路里的 Image.save(..., format="PNG")),并衔接 sRGB 交付心态与远程 Mac mini M4上的目录、manifest 与验收门槛,方便你贴进 shell、LaunchAgent 或 CI。
① Matplotlib 与 Plotly:交付选型矩阵
按治理模型选栈:Matplotlib 适合「样式与版式全部在 Python 里可 code review」的团队;Plotly 适合「Figure 与线上 Dashboard 同源、希望 PNG 与 JSON 状态一致」的场景。下表直接服务出 PNG 的交付负责人(数据、设计支持、前端素材)。设计侧通用 PNG 参数还可对照 三款设计工具批量导出 PNG 工作流,把图表与 UI 切图拉到同一套语言。
| 维度 | Matplotlib | Plotly |
|---|---|---|
| 无头 / 服务器批跑 | 优 — 设 MPLBACKEND=Agg,或在 import pyplot 前 matplotlib.use("Agg") |
优 — 安装 kaleido;fig.write_image("out.png") |
| 像素尺寸模型 | figsize(英寸)× savefig(dpi=...) 推导像素;bbox_inches="tight" 会改裁切,幻灯安全区要谨慎 |
显式 width/height(像素)+ 可选 scale(Retina 倍率) |
| 透明底 | transparent=True,配合 facecolor/edgecolor;深色底上检查抗锯齿发灰 |
paper_bgcolor/plot_bgcolor 设为透明 rgba;在 #000 / #FFF 衬底复测 Kaleido 输出 |
| 静态 vs 同源交互 | 偏静态、印刷感规格友好 | 同一 Figure 可服务 Dash 与 PNG;程序化截图时注意相机与可见 trace |
| 典型风险 | 字体发现路径、字重回退、 tight 裁掉轴标签 | Kaleido 与 plotly 小版本升级导致栅格边界变化;超大 WebGL trace 导出体积暴涨 |
② 可执行导出参数(复制即用)
以下假设 worker 为 macOS 或 Linux;在远程 Mac M4 上请用与 LaunchAgent 或 CI 相同的用户跑首次导出,以便字体缓存稳定。
Matplotlib:后端、dpi、透明
figsize[0] * dpi;落盘后务必用 sips -g pixelWidth 或 Pillow 再量一次。
# Shell:批任务强制非交互后端
export MPLBACKEND=Agg
# Python
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(10, 5.625), layout="constrained") # 约 16:9 英寸画布
ax.plot([0, 1], [0, 1])
fig.savefig(
"out/matplotlib_chart.png",
dpi=300,
transparent=True,
facecolor="none",
edgecolor="none",
bbox_inches="tight",
pad_inches=0.05,
)
dpi:演示稿 144–300;需进印刷 PDF 再缩放的正文,可用 300+。figsize:把英寸当作合同,与品牌规定的唯一dpi档位成对出现。transparent+facecolor="none":避免图例背后意外垫白。- 可选后端:对亚像素文字极敏感时可评估
mplcairo,仍须在目标阅读器上抽检。
Plotly:Kaleido 与 write_image(PNG)
Figure 对象使用 write_image 输出栅格;扩展名 .png 时可省略 format。团队若封装了名为 write_png 的 CLI,请保证内部仍调用同一套 write_image(..., format="png", engine="kaleido") 并锁版本,避免与「另一个导出实现」分叉。
import plotly.graph_objects as go
fig = go.Figure(data=go.Scatter(x=[0, 1], y=[0, 1]))
fig.update_layout(
template="plotly_white",
paper_bgcolor="rgba(0,0,0,0)",
plot_bgcolor="rgba(0,0,0,0)",
)
fig.write_image(
"out/plotly_chart.png",
format="png",
width=1920,
height=1080,
scale=2,
engine="kaleido",
)
width/height:直接对齐幻灯母版(1920×1080、3840×2160 等)。scale:Web 真 1× 用1;下游按 Retina 双倍栅格收图时用2。engine="kaleido":requirements.lock同时钉死kaleido与plotly。
合成落盘:Pillow 的 PNG 写入
Matplotlib 出图后与 Logo 合成时,最终可用 img.save("out.png", format="PNG", compress_level=6);模式需为 RGBA 时务必先完成直通道 alpha行为验证,再统一进 manifest。
③ sRGB、ICC 与 PNG 实际携带内容
Matplotlib / Plotly 不会自动替你签下「设计系统 ICC 合同」,Web 与幻灯交付建议仍以 sRGB 为口头与文档中的默认空间,再用与设计导出相同的办法证明:衬底样张、配置说明与清单。深入步骤见 Mac PNG sRGB 与 Display P3 清单 与 ICC 元数据与无损再压;下图表是数据图专用最小集。透明边缘还可交叉 透明通道 FAQ 清单。
| 检查项 | 动作 | 通过标准 |
|---|---|---|
| 色彩意图成文 | README 写明「交付 sRGB」或「仅内部 P3」 | 工单描述与仓库声明一致 |
| 中性底对比 | Safari + Chrome 中置于 #FFFFFF 与 #0B0B0B | 网格线与文字相对品牌 hex 在约定容差内 |
| 透明图 | 图例角 400% 放大 | 无灰边;与矢量参考在允许范围内一致 |
| 可选 ICC | 若市场强制嵌入,像素 QA 后再跑 exiftool / sips 策略 | 配置描述与团队规范一致且不改变像素值策略 |
④ 远程 M4:批处理路径与验收清单
把长耗时、大批量出图放到独立 Apple Silicon 节点,可避免笔记本合盖、VPN 抖动与本地字体漂移毁掉夜间任务。目录习惯可与设计 PNG 对齐:
~/png_jobs/viz_export/inbox/— 渲染进程写入原始 PNG。~/png_jobs/viz_export/work/— 可选水印、拼接、Pillow 后处理。~/png_jobs/viz_export/out/YYYY-MM-DD/— 晋升资产 + manifest。~/png_jobs/viz_export/log/export.jsonl— 每文件一行 JSON:工具、版本、dpi或scale、sha256。
超大画布与 4K 营销帧的吞吐思路可复用 远程 M4 批量导出 4K PNG 指南;自动化宽高、体积与重试可参考 OpenClaw PNG 批量质检 的编排方式,先用纯 shell 落地再渐进接入网关亦可。
| # | 验收门槛 | 工具提示 |
|---|---|---|
| 1 | 宽高与规格一致(±0 px) | sips -g pixelWidth -g pixelHeight 或 Pillow Image.open(...).size |
| 2 | 文件体积在最小/最大阈值内(抓白屏与空导) | macOS stat -f%z;监听脚本里比较阈值 |
| 3 | 无意外缩放(dpi / scale 漂移) | manifest 中记录值与 lockfile 版本交叉比对 |
| 4 | 正文与轴刻度清晰 | 预览 100% + 目标幻灯母版实贴 |
| 5 | 可复现构建 | 同 commit + 钉字体 → sha256 一致(在字体策略允许范围内) |
⑤ 小结
Matplotlib 的 Agg + savefig 与 Plotly 的 Kaleido + write_image 都能在冻结后端与依赖的前提下稳定交付 PNG;尺寸表达应二选一讲清:英寸 × dpi 或 像素 × scale,避免混用口语。配上 sRGB 心态下的衬底抽检、透明 alpha 目检,以及远程 M4 上带 manifest 的 out/ 树,数据图的交接可与营销 PNG 管线同一套严肃度。
下一步:租用远程 Mac M4 做批处理出图
打开 MacPng 首页了解场景,再到 购买 / 租用与 价格与节点比对套餐——无需登录即可浏览方案;接入步骤见 帮助中心。节点就绪后,把上文目录结构复制到用户主目录,夜间调度 Matplotlib / Plotly 任务,笔记本可保持合盖。更多 PNG 与自动化实践见 技术见解索引。