Community影像github.com

DrNbnonono/paper-figures

設計、繪製並驗證安全/系統論文的圖表(IEEE S&P、USENIX Security、CCS、NDSS、期刊、IEEE S&P Magazine),採用頂尖論文風格。

paper-figures 是什麼?

這個 AI Agent 技能專為撰寫安全與系統領域頂級會議論文(如 IEEE S&P、USENIX Security、CCS、NDSS)和期刊的研究人員設計,能協助從頭到尾創作符合專業標準的論文圖表。其核心原則是「一圖一個論點」,並透過嚴謹的設計規範(如向量輸出、印刷級字型、色盲友善調色盤、灰階存活測試)確保圖表在審稿與最終出版時都清晰可讀。技能內建可執行的 Python 範例(使用合成資料)、統一的 matplotlib 樣式模組,以及一個預提交檢查腳本,能自動檢測圖表尺寸、DPI、色調分離度等關鍵指標。透過遵循「先決定論點 → 選擇圖表編碼 → 繪製 → 標註與圖說 → 輸出與排版 → 審查驗證」的六步驟工作流程,使用者能顯著減少反覆修改,產出與頂會論文一致的相機就緒向量 PDF 圖表。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/DrNbnonono/skills/tree/HEAD/paper-figures

Installed? Explore more 影像 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

論文圖表

一張圖表就是一個可視化的論點。它在讀者未閱讀圖說之前,只花五秒鐘就能說出其所傳達的論點時,才算真正發揮價值。本技能中的一切皆服務於這個測試。

它所編碼的風格是 S&P、USENIX Security、CCS 和 NDSS 等頂尖論文共同的風格:小型、向量、兩欄寬度的圖表;少數的展示項目;直接標籤;印刷安全色彩;以及陳述結論而非僅描述座標軸的圖說。

核心原則

一張圖表 = 一個論點 = 圖說中的一個訊息。

如果需要展示兩個論點,請繪製兩個子圖或兩張圖表。一張展示三件事的圖表,最終會讓讀者什麼都記不住。

不可妥協的事項

  1. 每張圖表一個訊息。 圖說的第一句話就陳述它;圖形則支援它。
  2. 以印刷尺寸繪製。 單欄圖表寬度:IEEE 為 3.5 英寸,ACM sigconf 為 3.33 英寸,USENIX 為 3.4 英寸。切勿畫得很大然後在 LaTeX 中縮小:這會使字型縮小到低於 7 pt 的下限。
  3. 向量輸出(來自 matplotlib 的 .pdf)用於任何包含文字或線條的內容。只有照片和螢幕截圖才使用 300 dpi 的點陣圖。
  4. 印刷尺寸下字型 ≥ 7 pt;軸標籤 8 pt,刻度標籤 7 pt。
  5. 印刷安全色彩:Okabe–Ito 調色盤,不單靠顏色區分事物,且圖表必須能在灰階下存活(scripts/check_figure.py --preview)。
  6. 無誤導性座標軸:長條圖從零開始;對數刻度需標示;勿截斷 Y 軸以誇大差異;除非有明確陳述的理由,否則勿使用雙 Y 軸。
  7. 顯示不確定性:若論點是量化的,則需顯示信賴區間帶、誤差條或在圖說中說明樣本數。沒有分母的點估計不是一個結果。
  8. 圖說應陳述要注意的重點,然後是單位,接著是樣本數。它不是一個顏色列表。
  9. 無圖表垃圾:無 3D、無陰影、無裝飾性漸層、無彩虹圖、無背景填色、無與數據競爭的網格線。
  10. 可重現:產生該圖表的腳本應與資料檔或種子碼一起存放在儲存庫中。一張無法重現的圖表在最終稿件階段會成為一個負債。

步驟 0 — 先決定論點

用文字寫下一句話,而這句話必須讓圖表本身不言自明:

「公開漏洞利用程式碼現在出現得比安全公告還快:在四個時期中,30 天內從成品到公告的比率從 0.63 上升到 1.83。」

如果你無法在不使用「和」的情況下寫出那句話,你就需要兩張圖表。

在觸碰 matplotlib 之前,先填寫 templates/figure-brief.md。這只需要兩分鐘,但能防止最常見的重做:一個美麗卻展示錯誤數量的圖表。

步驟 1 — 根據論點選擇編碼

閱讀 references/encoding-guide.md。簡短版本:

論點類型編碼應避免
分佈 / 速度CDF(階梯圖)、小提琴圖、箱線圖、散點條狀圖僅顯示平均值而無離散度的長條圖
配對比較啞鈴圖、斜率圖、配對點圖兩個浮動長條
隨時間的組成變化堆疊面積圖、小型多組圖圓餅圖、3D 圓餅圖
排名排序的水平長條圖、點圖未排序的長條圖、彩虹色
雙變數權衡散點圖 + 帕雷托前緣泡泡圖(尺寸難以判讀)
矩陣 / 覆蓋率熱力圖(使用感知均勻的色圖)+ 儲存格內數值彩虹色熱力圖(無數值)
流程 / 時間軸泳道圖、時間軸、序列圖以散文形式呈現的日期表格
分類 / 決策標籤樹、已填充儲存格的矩陣巢狀項目符號文字

步驟 2 — 使用共享樣式繪製

import sys; sys.path.insert(0, "scripts")
from figure_style import apply_style, new_fig, save, SERIES, panel_label

apply_style()                       # 8 pt 基底、Okabe–Ito、印刷安全的 rcParams
fig, ax = new_fig(3.5, 2.3)         # 單欄,正確比例
ax.plot(x, y, color=SERIES[0], label="Pre-AI")
save(fig, "figs/fig1_cdf")          # 寫入 .pdf(用於 LaTeX)和 .png(預覽)

全域地調整樣式,切勿逐圖調整:同一篇論文中兩張使用不同字型或線寬的圖表,看起來會像來自兩篇不同的論文。

references/style-spec.md 列出了每一項設定及其設定原因。

步驟 3 — 直接標註,最後寫圖說

  • 將系列名稱放在其線條的末端,或直接放在圖上,而不是放在圖例框中。僅在直接標籤會互相衝突時才使用圖例(參見 examples/fig01_cdf.png)。
  • 面板標籤 A、B、C 以粗體置於左上角,並在圖說中引用。
  • 軸標籤:數量 + 單位 + 尺度(如 Days since disclosure (log scale))。
  • 然後使用 references/captions.md 編寫圖說:結論 → 軸顯示的內容 → 單位/樣本數/信賴區間 → 讀者絕對不能錯過的一個注意事項。

步驟 4 — 使其印刷安全

  • 調色盤:scripts/figure_style.py 中的 SERIES(Okabe–Ito)。序數資料:使用 cividis,絕不使用 jet。發散資料:使用 RdBu_r,且僅圍繞有意義的零點。
  • 也透過形狀編碼:標記和線條樣式隨系列變化,使圖表能在灰階印刷和色盲審稿人面前存活。
  • 執行檢查腳本:
python scripts/check_figure.py figs/fig1_cdf.png --preview

它會報告尺寸/DPI、色調調色盤、灰階和綠色弱分離情況,並寫出 fig1_cdf_gray.png / fig1_cdf_cvd.png。請檢查兩者。

references/accessibility.md 涵蓋了細節(對比度、色覺辨認障礙、替代文字)。

步驟 5 — 匯出並包含

  • 匯出嵌入了 TrueType 字型的向量 PDF(pdf.fonttype = 42,已設定)。
  • 以印刷寬度包含:\includegraphics[width=\columnwidth]{figs/fig1_cdf.pdf}。
  • 以 100% 比例檢查編譯後的 PDF:沒有小於 7 pt 的文字,沒有被裁剪的標籤,沒有圖表高度超過半欄(除非它是論文的主要概念圖)。
  • references/production.md 涵蓋 LaTeX 包含、字型嵌入和檔案佈局。

步驟 6 — 像審稿人一樣驗證

  1. 五秒測試:將圖表單獨展示給某人;他們能否說出論點?
  2. 圖說測試:第一句應該是論點,而不是「圖 3 顯示了……」。
  3. 灰階測試:兩個預覽圖都正確可讀。
  4. 縮放測試:在編譯後 PDF 的 100% 縮放下,每個標籤都清晰可見。
  5. 完整性測試:圖表中的數字與表格和文字相符;座標軸未被截斷;誤差條在圖說中有定義。
  6. 重用測試:刪除 PNG;腳本是否能重新產生位元組完全相同的檔案?應該可以。

展示項目預算

場地類別總展示項目數備註
頂尖四大會議6–10一張概念圖、一張時間軸、結果表格;每個項目都在文字中被引用
雜誌4–6每個項目一個訊息;使用側欄代替附錄
期刊8–12空間更大,規則相同

如果一張圖表在文字中沒有伴隨著論點引用(例如「圖 5 顯示了 X」),請移除它或改寫該句子。

反模式

反模式失敗原因
彩虹/jet 色圖非感知排序;誤導性數值;灰階下不可讀
3D 或帶陰影的長條圖/圓餅圖扭曲比較的裝飾
超過 3 個扇區的圓餅圖人類不善於比較角度;請使用排序後的長條圖
雙 Y 軸容易引發資料不支援的相關性推論;請使用兩個面板
長條圖截斷 Y 軸誇大差異;審稿人會注意到
包含 6 個條目的圖例框迫使讀者對色;請使用直接標籤或小型多組圖
在 LaTeX 中縮小的微小文字字型低於 7 pt;圖表變成灰色噪聲
列出顏色的圖說「藍色線條顯示了……」告訴讀者他們已經能看到的東西,毫無用處
表格的螢幕截圖非向量、不可編輯、不易存取
重述表格的圖表浪費一個展示項目;保留支援論點的那個
未標示的對數軸讀者無法比較跨十的冪次的斜率
缺少樣本數/誤差條沒有不確定性的點估計不是證據

資源對應表

檔案用途
references/venue-figure-profiles.md頂尖四大會議的期望、欄寬、圖說/放置規則
references/encoding-guide.md論點 → 圖表對應、對數尺度、不確定性、何時使用表格
references/style-spec.md每個 matplotlib 設定及其原因;調色盤十六進位色碼
references/captions.md圖說公式以及前後對比範例
references/accessibility.md色盲與灰階安全、對比度、替代文字
references/production.md匯出、LaTeX 包含、字型、檔案佈局、可重現性
references/anti-patterns.md應移除的內容,附帶範例說明
scripts/figure_style.pyrcParams、Okabe–Ito 調色盤、new_fig、save、panel_label
scripts/check_figure.py尺寸/DPI 檢查、灰階和綠色弱預覽、調色盤報告
scripts/make_examples.py產生所有範例圖表(使用合成資料)
examples/參考圖像:良好範例,以及一組好/壞對比
templates/figure-brief.md繪製前的一頁簡報

相關技能