name: academic-figures version: 2.0.1 date: 2026-08-13 author: docsor1212 lang: zh description: > Academic-figures 論文配圖一鍵生成:別再為返工改圖發愁。一條命令生成頂刊級論文配圖: 14種圖表(柱狀/散點/熱力/森林/KM/ROC/ 小提琴/組合/流程…)、7套配色(含Okabe-Ito色盲安全)、Nature/Lancet期刊預設, 內建PDF文字重疊+最小字號雙重門禁,匯出前自動攔截拒稿級缺陷。600dpi出版級輸出 PNG/SVG/PDF/TIFF/EPS,純本地執行,資料不出機。中文零配置,告別亂碼。 觸發詞:論文配圖、畫圖、柱狀圖、熱力圖、散點圖、森林圖、KM生存曲線、ROC、 小提琴圖、組合圖、流程圖、SCI配圖、科研繪圖、資料視覺化、期刊配圖、色盲安全。 metadata: clawdbot: emoji: "📊" category: visualization requires: python: ">=3.8" pip: ["matplotlib", "numpy", "pymupdf", "scipy"]
📊 14種圖表 · 7套配色(含色盲安全) · 零配置中文 · 600dpi出版級輸出 · PDF/TIFF/SVG全支援 純本地執行 · 資料不出本機 · Python一條命令搞定 · 內建校驗+驗證門禁
一條命令,輸出即驗證:
python3 scripts/gen_figure.py -t bar -d data.json -o fig.pdf --theme okabe-ito --verify
# exit 0 = 渲染成功且無真實文字重疊;exit 2 = 檢測到重疊(修復機制,不要交付)
| 特性 | 說明 |
|---|---|
| 📊 14種學術圖表 | 柱狀圖、水平柱狀圖、堆疊柱狀圖、熱力圖、散點圖、折線圖、雙Y軸圖、箱線圖、森林圖、KM生存曲線、ROC曲線、小提琴圖、組合圖、流程圖 |
| 🎨 7套配色方案 | Okabe-Ito色盲安全(Nature Methods金標準)、GLM科技部落格、cool素雅冷色調、Nature、Lancet、保守學術、通用 |
| 📐 期刊預設 | --journal nature/lancet --column single/double:官方欄寬(89/183mm)、字號、字型族、600dpi 一鍵應用 |
| 🛡️ 資料校驗 | 18種類型/別名全覆蓋的結構校驗;致命錯誤→exit 1 不落盤,警告→繼續執行 |
| ✅ 驗證門禁 | --verify 畫素級重疊檢查(exit 2);audit_pdf.py 字號門禁(期刊最小字號) |
| 🇨🇳 中文零配置 | 自動檢測中文字型(含字典鍵、補充平面),徹底告別亂碼,支援中英雙語標籤 |
| 📈 統計標註 | 誤差棒、顯著性標記(p值星號)、趨勢線、置信區間 |
| 🔠 斜紋填充 | --hatch 一鍵新增黑色斜紋圖案(列印友好,色盲友好) |
| 🔷🔶 黃藍交替 | --alternate 單系列柱狀圖逐柱交替黃藍(GLM-5.2部落格風格) |
| 📊 比率標註 | --show-ratio 自動計算並標註分組間倍數(如"4.96x") |
| 🌲 增強森林圖 | 權重氣泡、I²異質性標註、事件數列、分隔線、效應量標籤 |
| 📉 KM生存曲線 | 階梯函式、刪失標記、Log-rank檢驗、風險表、中位生存 |
| 📐 ROC曲線 | AUC值、95%CI、最優截斷點、多模型對比 |
| 🧩 組合圖 | 多面板A+B+C,每個面板可放任意圖表型別,期刊figure標準佈局 |
| 📐 流程圖 | 架構/流程塊、箭頭、分組標註,CONSORT式研究設計圖 |
| 📄 補充圖例 | gen_legend.py 用同一資料JSON生成期刊格式圖例("Figure 1 |
| 📐 多格式輸出 | PNG 600dpi + SVG + PDF + TIFF + EPS |
| ♿ 無障礙支援 | Okabe-Ito色盲安全配色 + Alt Text撰寫指南 |
| 型別 | 命令 | 核心功能 |
|---|---|---|
| 柱狀圖 | -t bar |
分組柱狀圖、誤差棒、顯著性標記、斜紋填充 |
| 水平柱狀圖 | -t hbar |
橫向柱狀圖、比率標註("4.96x") |
| 堆疊柱狀圖 | -t stacked_bar |
構成比、百分比標籤、總計標註 |
| 熱力圖 | -t heatmap |
單元格標註、自定義色階、colorbar |
| 散點圖 | -t scatter |
趨勢線、相關係數、分組著色、點標籤 |
| 折線圖 | -t line |
多系列、誤差帶、標記點 |
| 雙Y軸圖 | -t dual_axis |
左右Y軸、實線+虛線、合併圖例 |
| 箱線圖 | -t box |
箱線圖+抖動散點 |
| 森林圖 | -t forest |
CI橫線、權重氣泡、總效應菱形、I²、事件數 |
| KM生存曲線 | -t km |
階梯函式、刪失標記、Log-rank檢驗、風險表、中位生存 |
| ROC曲線 | -t roc |
AUC、95%CI、最優截斷點、多模型對比 |
| 小提琴圖 | -t violin |
密度估計、內建均值/中位線 |
| 組合圖 | -t composite |
多面板A+B+C,每面板任意圖表型別,期刊figure佈局 |
| 流程圖 | -t diagram |
架構/流程塊、箭頭、分組標註,CONSORT式研究設計 |
# 0️⃣ 首次使用:一鍵環境準備(裝依賴/檢測中文字型/清理字型快取/自檢)
python3 scripts/setup_env.py
# 0️⃣ 快速體驗:互動演示(選擇圖表型別 → 內建資料直接出圖)
python3 scripts/gen_figure.py --demo --cjk
# 檢視全部配色:python3 scripts/gen_figure.py --list-themes
# 某圖型限制說明:python3 scripts/gen_figure.py --explain bar
# 1️⃣ 柱狀圖(預設 glm 素雅配色,色盲安全)
python3 scripts/gen_figure.py -t bar -d data.json -o figure.png \
--title "圖2 主標題 / Subtitle" --ylabel "準確率 Accuracy (%)"
# 水平柱狀圖 + 比率標註 + GLM配色(科技部落格風格)
python3 scripts/gen_figure.py -t hbar -d throughput.json -o perf.png --theme glm \
--show-ratio --title "吞吐量提升" --xlabel "歸一化吞吐量"
# 柱狀圖 + 斜紋填充(GLM 黃藍斜線招牌風格,列印友好,色盲友好)
python3 scripts/gen_figure.py -t bar -d data.json -o hatch.png --style glm-hatch \
--show-values --title "ACR50緩解率"
# Meta分析森林圖(PDF輸出)
python3 scripts/gen_figure.py -t forest -d forest.json -o forest.pdf --theme okabe-ito
# Kaplan-Meier生存曲線 + Log-rank檢驗
python3 scripts/gen_figure.py -t km -d survival.json -o km.png --theme okabe-ito \
--title "圖3 Kaplan-Meier生存曲線" --xlabel "時間 (月)" --ylabel "生存機率"
# ROC曲線 + AUC
python3 scripts/gen_figure.py -t roc -d roc.json -o roc.png --theme okabe-ito \
--title "圖4 ROC曲線" --xlabel "1 - 特異度" --ylabel "敏感度"
# 堆疊柱狀圖(亞組構成比)
python3 scripts/gen_figure.py -t stacked_bar -d subgroups.json -o stacked.png --theme okabe-ito \
--title "圖5 ANCA相關血管炎器官受累"
# 雙Y軸圖(臨床評分+實驗室指標)
python3 scripts/gen_figure.py -t dual_axis -d dual.json -o dual.png --theme okabe-ito \
--title "圖6 CRP與DAS28隨治療變化"
# Nature雙欄投稿:欄寬183mm、7pt Helvetica、最小字號5pt
python3 scripts/gen_figure.py -t bar -d data.json -o nat.pdf --journal nature --column double
python3 scripts/audit_pdf.py nat.pdf --min-size 5 # 字號門禁(nature=5pt)
# 多面板組合圖(Panel A+B+C,期刊figure佈局)
python3 scripts/gen_figure.py -t composite -d composite.json -o figure4.png --theme okabe-ito
# 架構/流程圖(研究設計,CONSORT式)
python3 scripts/gen_figure.py -t diagram -d flow.json -o flow.png --theme glm --width 12 --height 6
# 熱力圖(自定義色階 + 中文)
python3 scripts/gen_figure.py -t heatmap -d data.json -o heatmap.png --cjk \
--cmap RdBu_r --vmin -20 --vmax 45
# Lancet投稿TIFF格式(照片內容 → 300dpi)
python3 scripts/gen_figure.py -t bar -d data.json -o figure.tiff --dpi 300 --theme lancet
# 補充圖例(期刊格式,同一資料JSON)
python3 scripts/gen_legend.py -d data.json -t "治療應答" -f 1 -o legend.txt
預設配色 = glm(素雅莫蘭迪風,色盲安全)——美觀不刺眼,單序列圖表也有暖黃點綴,不單調。
| 方案 | 說明 | 色盲安全 |
|---|---|---|
glm ⭐預設 |
素雅莫蘭迪(鋼藍/暖黃/鼠尾草綠/灰紫/珊瑚)— 美觀+色盲安全,預設首選 | ✅ 是 |
okabe-ito |
Nature Methods金標準(Wong 2011)— 鮮豔,期刊投稿首選 | ✅ 是 |
cool |
素雅冷色調(藏青/海藍/青灰/石板色,色相190-260°) | ✅ 是 |
classic |
經典 matplotlib 色板(v2.0 前的舊預設,相容保留) | ❌ |
nature |
NPG Nature期刊配色 | ❌ |
lancet |
Lancet醫學配色 | ❌ |
conservative |
保守學術配色 | ❌ |
# 終端內直接檢視全部配色(彩色色塊 + 說明)
python3 scripts/gen_figure.py --list-themes
# 生成某套配色的色板預覽圖(可放文件/投稿材料)
python3 scripts/gen_figure.py --theme-swatch glm -o swatch.png
# 便捷別名(記不住全名也能用)
# okabe → okabe-ito colorblind → okabe-ito default/classic → glm
# 大小寫不敏感、自動字首匹配(--theme gla → glm)
⚠️ 投稿建議:期刊投稿用
--theme okabe-ito(Nature、Science、Cell 等主流期刊強制要求色盲友好圖表,紅綠配色是常見退稿原因)。🎨 日常偏好:非投稿場景(演示、部落格、報告)用預設
glm即可——素雅柔和、色盲安全、有品牌辨識度。避免大紅大綠大黃配色方案。
# 一鍵啟用:GLM 素雅莫蘭迪配色 + 黑色斜紋填充
python3 scripts/gen_figure.py -t bar -d data.json -o fig.png --style glm-hatch --cjk
# 等價於 --theme glm --hatch
--style glm-hatch 自動作用於這些型別)--alternate 單系列黃藍逐柱交替;--hatch 可搭配任意主題使用Okabe-Ito配色是色盲安全學術視覺化的金標準: - Nature Methods專欄明確推薦(Wong 2011, Nat Methods 8:441) - 8種顏色在紅色盲、綠色盲、藍色盲下均可區分 - 視覺鮮明——與傳統配色無審美差距
--journal nature|lancet + --column single|double 自動應用期刊官方欄寬、字號、字型族和DPI。欄寬取自官方作者指南:
| 期刊 | 欄位 | 寬度 | 字號 | 最小字號 | 字型族 | DPI |
|---|---|---|---|---|---|---|
nature |
單欄 | 89mm (3.50in) | 7pt | 5pt | Helvetica | 600 |
nature |
雙欄 | 183mm (7.20in) | 7pt | 5pt | Helvetica | 600 |
lancet |
單欄 | 85mm (3.35in) | 8pt | 6pt | Arial | 600 |
lancet |
雙欄 | 183mm (7.20in) | 8pt | 6pt | Arial | 600 |
高度按主題縱橫比自動計算;顯式 --width/--height 可覆蓋。stderr 會列印預設資訊和對應的 audit_pdf.py --min-size 門禁提示:
python3 scripts/gen_figure.py -t forest -d forest.json -o nat.pdf --journal nature --column double
# stderr: Journal preset: nature (double-column, width=7.20in, font=Helvetica 7pt, min text 5pt
# — verify with audit_pdf.py --min-size 5)
python3 scripts/audit_pdf.py nat.pdf --min-size 5
# OK: no text below 5pt in nat.pdf
每次執行都經過 validate_data(data, chart_type) —— 覆蓋全部 18 種類型/別名分支的結構校驗。兩個嚴重級別:
| 級別 | stderr字首 | 效果 | 退出碼 |
|---|---|---|---|
| 致命 | ERROR: |
資料不可用(如空系列、系列長度不匹配、缺少必需鍵、ROC AUC超出[0,1]) | 1(不落盤) |
| 警告 | WARNING: |
資料可用但有隱患(如缺少建議鍵) | 0 |
| 驗證失敗 | (來自--verify) |
PDF已渲染但畫素級檢測到文字重疊 | 2 |
致命錯誤示例:bar 的 series 長度不一致;box/violin 的 labels 數量 ≠ 組數(見邊界情況);ROC 的 curves[].auc > 1。
任何可交付圖片必須通過兩道門禁,補充材料再加一道:
--verify(內聯,PDF輸出時)python3 scripts/gen_figure.py -t km -d survival.json -o km.pdf --theme okabe-ito --verify
# 檢測到畫素級文字重疊 → exit 2 + 提示 — 修復機制本身,不要逐圖特判。
audit_pdf.py — 字號門禁(期刊最小字號)python3 scripts/audit_pdf.py figure.pdf --min-size 5 --fail-below
# --fail-below: 存在小於 --min-size 的文本時以非零碼退出
# --max-reports N: 限制違規列表條數(預設20)
verify_overlap_pixel.py — 重疊驗證器(交付每個 PDF 前必跑)python3 scripts/verify_overlap_pixel.py output.pdf
# 輸出 "文本對=N 候選=M 真實重疊=K" — K 必須為 0。
關鍵警告——不要相信 PyMuPDF bbox 相交報告。 PyMuPDF 的 span/char bbox 採用字型行高模型(Noto CJK 2.856em、DejaVu 1.695em),對旋轉文本/豎排標籤系統性高估(45° 時 fs=9 報 32.3pt,真實墨跡僅 16.8pt)。兩個 bbox 相交 ≠ 真實重疊——在本工具的輸出上,此類報告 100% 是假陽性。驗證器用三級流程消除誤報:
防重疊機制已內建於 gen_figure.py(密集柱狀圖 x 軸標籤自動 45° 旋轉、hbar >12 類目字號縮小、_ensure_ylabel_clear() labelpad 自動避讓)。若驗證器報出真實重疊>0,說明圖確實壞了——應修機制,不要逐圖特判。
倉庫附帶回歸套件,任何改動後都可重新驗證門禁:
python3 tests/run_tests.py # 50 個 unittest 測試 — 必須全過
# evals/evals.json: 8 個行為評測(退出碼、CJK自動載入、期刊預設、圖例審計…)
禁止圖內圖例的期刊(如Nature)需要單獨的圖例塊。gen_legend.py 用與出圖相同的資料JSON生成期刊格式圖例("Figure 1 | 標題…"),圖例文字與系列/顏色永遠一致:
python3 scripts/gen_legend.py -d data.json -t "治療應答" -f 1 -o legend.txt
# -d/--data: 與 gen_figure.py 相同的資料JSON -t/--title: 圖例標題
# -f/--figure: 圖號(預設1) --type: 圖表型別(預設bar)
# --error-type: 誤差棒描述(預設 "s.e.m.") -o: 輸出檔案(預設stdout)
傳 --cjk 自動檢測並載入系統中文字型,零手動配置:
python3 scripts/gen_figure.py -t bar -d data.json -o fig.png --cjk
字型檢測優先順序:Noto Sans CJK → PingFang → Microsoft YaHei → WQY → AR PL → Droid。
自定義字型:--cjk-font /path/to/font.ttf
CJK 自動檢測是遞迴的(v1.6.2+):_scan_cjk() 遍歷整個 data 字典——值和鍵(v2.0),包括巢狀的 composite 面板和 diagram 文本——所以中文系列名(如 "對照組")獨自即可觸發字型載入。檢測覆蓋補充平面(Ext-B..F U+20000–U+2EBEF、Ext-G U+30000–U+3134F)加基本 BMP 區段(v2.0)。
| 格式 | 副檔名 | DPI | 適用場景 |
|---|---|---|---|
| PNG | .png |
600(預設) | 通用、簡報 |
| SVG | .svg |
向量 | Web、可編輯圖形 |
.pdf |
向量 | 期刊投稿首選 | |
| TIFF | .tiff |
600(可 --dpi 300) |
Nature/Lancet照片要求 |
| EPS | .eps |
向量 | 傳統期刊要求 |
投稿技巧:Nature和Science偏好PDF/EPS向量格式用於線稿。使用
.eps副檔名即可。
| 內容型別 | 所需DPI | 用法 |
|---|---|---|
| 線稿(圖表) | 600-1000+ | 預設600;嚴格期刊用 --dpi 1000 |
| 照片/顯微圖 | 300-600 | 用 --dpi 300 |
| 混合型 | 600 | 預設 |
| 向量(PDF/SVG/EPS) | 不適用 | 解析度無關 |
| 引數 | 說明 |
|---|---|
--title "文字" |
圖表標題 |
--xlabel, --ylabel |
座標軸標籤 |
--width N, --height N |
圖表尺寸(英寸) |
--format F |
強制輸出格式:png, svg, pdf, tiff, eps |
--dpi N |
覆蓋DPI設定 |
--show-values |
柱狀圖顯示數值標籤 |
--show-ratio |
顯示分組間比率標註(如"4.96x") |
--ratio-base N |
比率計算的基準系列索引(預設0) |
--hatch |
新增黑色斜紋圖案(列印友好,10種圖案迴圈) |
--alternate |
GLM-5.2部落格風格:單系列柱狀圖逐柱交替使用主題前兩色(配合 --theme glm --hatch 即黃藍交替黑斜線) |
--no-trend |
隱藏散點趨勢線 |
--no-legend |
隱藏圖例 |
--cmap NAME |
熱力圖色階(預設資料驅動:全正資料自動用 YlOrRd 暖色漸變無斷層;含負值用 RdBu_r 紅藍髮散;顯式指定覆蓋) |
--vmin, --vmax |
熱力圖數值範圍 |
--cjk |
強制載入中文字型(資料含中文時也會自動檢測) |
--cjk-font PATH |
自定義中文字型檔案 |
--journal nature\|lancet |
應用期刊預設(欄寬/字號/DPI,見上) |
--column single\|double |
--journal 的欄位佈局(預設雙欄) |
--verify |
對PDF輸出做畫素級重疊驗證,發現重疊 exit 2 |
python3 scripts/setup_env.py 一鍵安裝依賴(matplotlib/numpy/pymupdf/scipy)、檢測中文字型、清理字型快取並自檢。python3 scripts/setup_env.py(自動清快取),或手動刪除 ~/.cache/matplotlib 後重跑。需系統已裝中文字型(Linux: fonts-noto-cjk;macOS/Win 系統自帶)。errors/significance 欄位。觸發時報錯會附帶此提示。python3 scripts/gen_figure.py --list-themes(終端內彩色色塊)或 --theme-swatch glm -o swatch.png 生成色板圖。okabe/colorblind→okabe-ito,default/classic→glm;大小寫不敏感,支援字首匹配(--theme gla → glm)。python3 scripts/gen_figure.py --demo --cjk 互動式選擇圖表型別直接出圖;--explain <型別> 檢視該型別的限制與推薦用法。labels = 組名。 labels 按系列/組數校驗,不是按數值個數。{"labels": ["A","B"], "series": [[..],[..]]} 正確;逐值標籤列表會校驗失敗。curves[].auc 必須在 [0,1];檢查覆蓋每條模型曲線,不只看頂層 auc。. 結尾(_fmt_n 格式化器自帶句點——不再追加)。series/groups 中的中文鍵通過鍵掃描觸發 CJK 字型載入;否則系列標籤在圖例中渲染成方塊亂碼。detect_cjk_font.py 驗證字形覆蓋。投稿時需為每個圖表提供Alt Text描述。示例:
"柱狀圖顯示治療組(均值75,標準差3)與對照組(均值68,標準差2)的比較。誤差棒表示標準差。星號表示統計學顯著性(p < 0.001)。"
7w4.net小蔥技能站收錄全網優質技能,值得收藏。
Springer Nature、NSF等主要出版商均要求Alt Text以符合無障礙標準。
JSON(完整功能)或 CSV(基礎功能)。詳見 references/data-formats.md。
JSON柱狀圖示例:
{
"labels": ["對照組", "實驗組"],
"series": {"治療前": [75, 82], "治療後": [68, 70]},
"errors": {"治療前": [3, 2], "治療後": [2, 1]},
"significance": {"治療前:0": "***", "治療後:1": "NS"}
}
KM生存曲線示例:
{
"groups": {
"治療組": [[12,1],[24,1],[36,0],[48,1],[60,0],[72,0]],
"對照組": [[6,1],[10,1],[18,1],[30,1],[42,0],[48,1]]
},
"log_rank": {"p": 0.032, "method": "Log-rank"},
"risk_table": {
"times": [0, 12, 24, 36, 48],
"治療組": [50, 42, 35, 28, 20],
"對照組": [50, 38, 25, 15, 8]
}
}
ROC曲線示例:
{
"fpr": [0.0, 0.05, 0.10, 0.15, 0.30, 0.50, 1.0],
"tpr": [0.0, 0.45, 0.68, 0.82, 0.92, 0.96, 1.0],
"auc": 0.912,
"ci": {"low": 0.854, "high": 0.958},
"cutoff": {"fpr": 0.15, "tpr": 0.88, "threshold": 2.35}
}
若通過 Python 指令碼而非 CLI 出圖:
detect_cjk_font()fontproperties=font_propplt.rcParams['axes.unicode_minus'] = False(防止負號變方框)--hatch),列印友好且系列可區分。斜紋線為黑色(edgecolor='black')。斜紋啟用時不要手動覆蓋 edgecolor——由 gen_bar 處理。facecolor='white')。深色/黑色背景永不接受。不要新增深色主題或深色背景選項。validate_data(data, chart_type) 並檢查致命資訊(與CLI同一套門禁)。verify_overlap_pixel.py。save_kwargs["facecolor"] 硬編碼為 'white'。永不新增深色主題支援。--hatch 啟用時斜紋線為黑色,保證任何填充色上都可見,無需深色背景。每個系列迴圈不同圖案以便黑白列印區分。glm(素雅、色盲安全)。期刊投稿始終推薦 --theme okabe-ito 保證色盲安全。cool 適合全冷色調內容。⁹ (U+2079)、³ (U+00B3)、² (U+00B2) 常觸發 Noto Sans CJK 的 "Glyph X missing" 警告。改用純文本寫法:10^9/L 代替 ×10⁹/L。釋出前用 detect_cjk_font.py 檢查字形覆蓋。page.find_tables() 通常返回0個表格。page.get_text() 得到列混合文本(表頭行與資料行交錯)而非按行對齊。6行一條的線性解析器會失敗。可靠方案:提取全文塊 → 按指標專用正則模式匹配(見 references/chinese-lab-report-extraction.md)。#FFFFFF —— 白塊在強制白底上不可見。用主題配色或任何可見十六進位制色。sublabel。academic-figures/
├── SKILL.md ← 英文文件
├── SKILL_ZH.md ← 中文文件(本檔案)
├── scripts/
│ ├── gen_figure.py ← 主生成器(matplotlib+numpy)
│ ├── gen_legend.py ← 補充圖例生成器(期刊格式,v2.0)
│ ├── audit_pdf.py ← 字號審計器(--min-size 門禁,v2.0)
│ ├── detect_cjk_font.py ← CJK字型自動檢測器
│ ├── verify_overlap_pixel.py ← 畫素級標籤重疊驗證器(每個PDF交付前必跑)
│ └── extract_lab_pdf.py ← 中文醫院化驗單PDF → JSON提取器
├── tests/
│ └── run_tests.py ← 50個unittest迴歸測試(v2.0)
├── evals/
│ └── evals.json ← 8個行為評測(退出碼、CJK、期刊預設,v2.0)
└── references/
├── data-formats.md ← 各圖表型別JSON/CSV schema
├── pitfalls.md ← 常見錯誤和白底規則
├── reverse-engineering-colors.md ← 從參考圖提取精確顏色
└── chinese-lab-report-extraction.md ← 解析非標準LIS PDF技術
glm(素雅莫蘭迪、色盲安全;舊 default 改名 classic 相容保留)。--list-themes(終端彩色色塊一覽 7 套配色)、--theme-swatch <主題> -o out.png(色板預覽圖)、--style glm-hatch(GLM 黃藍斜線招牌風格一鍵預設)、--demo(互動演示選單,內建 12 類示例資料)、--explain <型別>(限制條件說明)、主題別名+大小寫/字首容錯(okabe/colorblind/glm-blog/default→glm)。--hatch 擴充套件支援 stacked_bar 與 forest(overall 菱形斜紋)。--cmap 未指定時預設 RdBu_r(紅藍髮散,正紅負藍)——此前因 kwargs 預設值失效,熱力圖實際渲染為 matplotlib 預設 viridis(黃綠色);顯式 --cmap 仍可覆蓋。scripts/setup_env.py 一鍵環境準備(依賴安裝/中文字型檢測/字型快取清理/自檢)。examples/ 目錄:5 個示例資料 JSON + 7 套配色 swatch 預覽 + README。validate_data():覆蓋全部 18 種類型/別名分支的結構校驗,main() 集中呼叫;致命 → ERROR: + exit 1(不落盤),警告 → WARNING:(繼續)。示例:空系列、長度不匹配系列、box/violin labels≠組數、缺少必需鍵、ROC curves[].auc 超出 [0,1]。--journal nature|lancet + --column single|double:官方欄寬(nature 89/183mm,lancet 85/183mm)、字號(7/8pt)、字型族(Helvetica/Arial)、600dpi。--verify:PDF 輸出內聯畫素級重疊檢查,真實重疊 exit 2。scripts/audit_pdf.py:字號審計,--min-size/--fail-below/--max-reports — 期刊最小字號門禁(nature 5pt,lancet 6pt)。scripts/gen_legend.py:從同一資料JSON生成期刊格式補充圖例。legend_audit():Python API 誤用導致的空圖例檢測。labels 按組名校驗(系列數而非值數);ROC AUC 逐條曲線檢查邊界;has_cjk() 擴充套件到補充平面(Ext-B..F U+20000–U+2EBEF、Ext-G U+30000–U+3134F);組合圖圖例重複句點移除;_scan_cjk() 現在也掃描字典鍵(中文系列名觸發字型載入)。tests/run_tests.py:50個unittest測試(14圖型CLI冒煙 + validate_data單元 + CSV邊界 + CJK + 圖例審計 + PDF審計 + 圖例生成)。evals/evals.json:8個行為評測,每個都對照真實CLI行為驗證(退出碼、CJK自動載入、nature雙欄=183mm、圖例審計不誤報、CSV長格式、box組標籤、KM圖例格式)。gen_scatter 現在渲染 data["labels"] 點標籤(每個 x/y 點一個,上下交替偏移且偏移隨索引增長,防止 1950/1953/1955 這類聚集點標籤碰撞);(2) 趨勢線加 label='Linear trend',圖例會說明虛線是線性迴歸線(此前虛線無任何標註,讀者無法理解)。demo3 以完整標註重建(標題、雙軸標籤、點標籤、圖例)——驗證 0 處真實重疊。verify_overlap_pixel.py,requires pip 列表補入 pymupdf/scipy(驗證器依賴)。demo 圖改用真實資料重新生成(demo2 = KEGG 通路基因數、demo3 = ChEMBL pchembl 值)——此前 demo 資料集含退化合成值(基因數全 50 / max_phase 全 4.0),導致座標軸被壓縮成誤導性密集刻度。confirm_min_dist 三級歸屬改為"唯一歸屬"(分量質心同時落入雙方候選窗時歸屬距 origin 更近者),消除旋轉 y 軸標籤場景的假陽性(scatter 的 (max phase) 標籤 × 頂部刻度 4.00——此前報告的"重疊"是驗證器交叉歸屬所致,並非真實墨跡接觸)。重驗全部 14 張生產圖 + 4 張 demo:0 處真實重疊。gen_figure.py 新增 _ensure_ylabel_clear() 安全網(matplotlib 實測 bbox 與刻度真實衝突時自動增大 y 軸 labelpad;無衝突時惰性不觸發,當前全部圖形均未觸發)。get_window_extent(20.9pt vs 真實 16.8pt)略保守,防重疊機制本身正確無需改動。驗證器歸檔於 scripts/verify_overlap_pixel.py;移除 gen_figure.py 中死匯入 math。_text_has_cjk() 會掃描整個 data 字典(含巢狀的 composite 面板/diagram 文本),composite 面板內的中文標題現在能正確觸發 Noto Sans CJK 字型載入(此前渲染成方框亂碼)。(2) 標籤自動防重疊:bar 圖 x 軸標籤 >8 個或標籤 >12 字元、line 圖 >10 個點、heatmap 列 >6 個或 >14 字元時自動旋轉 45°;hbar 類別 >12 個時 y 軸標籤字號縮小 1pt;composite 面板將 alternate 透傳給 hbar 子圖。#D49356 → #D79D55(GLM-5.2 部落格原圖 14.3 萬黃色畫素的真實均值;此前取到了分佈中偏暗的樣本)。所有交替風格柱狀圖現使用更亮的暖黃色--alternate 引數:GLM-5.2部落格風格黃藍交替柱狀圖。單系列 bar/hbar 圖逐柱交替使用主題前兩色(glm 主題下為黃 #D79D55 / 藍 #70A0D0),配合 --hatch 即復現部落格的"黃藍交替+黑色斜線"樣式;也可與 cool/okabe-ito 等主題組合使用cool 主題:8色冷色調配色(藏青 #1B4965、海藍 #2E6F9E、天藍 #4FA3C5、深青 #3D8080、中青 #62A0A8、鋼藍 #5B7BA0、石板 #7B9AB5、淺鋼藍 #9DB5CC),色相全在190-260°,色盲安全。因使用者拒絕暖/飽和配色並需求素雅冷色調而建立。gen_km() 在 median_survival 為 null(中位生存未達到)時崩潰;gen_scatter() 在 groups 陣列長度超過 x/y 長度(composite面板)時崩潰。均已用 null/長度守衛修復。新增 cool 主題(藏青/海藍/青灰/石板冷色調,色盲安全)。見 references/pitfalls.md。#70A0D0藍+#D79D55黃,取原影像素均值);新增斜紋填充功能(--hatch,黑色線條,9種圖案,列印友好);新增 --hatch、--show-ratio、--ratio-base、--horizontal CLI引數;強制白底輸出(出版標準)這個 Skill 質量很不錯,提供了14種學術圖表模板和7套專業配色方案,支援中文標籤和600dpi高解析度輸出,能自動檢查圖表缺陷。適合需要發表論文或做科研彙報的使用者。功能很全面,但部分圖表需要了解統計學知識才能正確使用,中文文件可以更精簡一些。總體來說,這是一個功能強大、細節考慮周到的科研繪圖工具。