投研材料、資料週報與成長看板往往既要互動,也要可嵌入的靜態 PNG。真正卡交付的不是「能不能匯出」,而是像素合約、透明通道與色彩意圖由誰背書。本文給出 2026 年可用的選型對照表、可複製參數(dpi、figsize、transparent、MPLBACKEND、write_image/Kaleido,以及合成鏈路裡的 Image.save(..., format="PNG")),並銜接 sRGB 交付心態與遠端 Mac mini M4上的目錄、manifest 與驗收門檻,可直接貼入 shell 或 CI。
① Matplotlib 與 Plotly:交付選型矩陣
依治理模型選堆疊:Matplotlib 適合「樣式與版式全部在 Python 裡可 code review」的團隊;Plotly 適合「Figure 與線上 Dashboard 同源、希望 PNG 與 JSON 狀態一致」的情境。下表服務交付負責人;設計側 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 請用與 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 與自動化實踐見 技術見解索引。