Community影像github.com

aipoch/figure-style

用於最終交付的科學圖表之出版級正確性與可讀性規則,非探索性圖表。適用於報告、論文、匯出成品或保留的圖稿。涵蓋數據忠實度、標籤經濟性、色彩線索、圖表選擇、版面配置,以及渲染後驗證的品質保證,但不強制視覺風格。對於多面板組圖,請使用 `figure-composer`;對於整篇論文的排序,請使用 `paper-narrative`。

figure-style 是什麼?

此技能 (`aipoch/figure-style`) 提供一套完整的檢查清單,用於製作最終交付的科學圖表,例如報告、論文中的圖表,或匯出的成品。其核心目標是確保圖表的正確性、可讀性和內部一致性,同時避免強制特定的視覺風格,讓使用者可以自由設定框架、字型和調色盤。技能涵蓋的範圍包括數據忠實度(例如排除行、可比條件)、標籤經濟性(減少干擾,強調重點)、色彩線索與無障礙性、版面配置(例如小多圖、軸線設定),以及渲染後驗證的品質保證程序。此技能獨立運作於單一圖表層級,並可與 `figure-composer`(多面板組圖)和 `paper-narrative`(整篇論文排序)等其他技能協作,以支援更複雜的科學視覺化工作流程。它定義了與平台無關的規則,並提供如 `apply_figure_style()`、`focal_palette()` 和 `strip_with_median()` 等輔助函數,可在任何支援 Python 與 Matplotlib 的環境中應用。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/aipoch/open-science/tree/HEAD/resources/skills/figure-style

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

在你喜歡的 AI 中提問

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

說明文件

出版級圖表規則

一份針對正確、易讀且內部一致的科學圖表之檢查清單。此技能不強制視覺風格——框架、字型和調色盤均為可調參數。在開始繪圖前,請遵循下方的 Notebook 呼叫,並調用 apply_figure_style()。

開放科學 Notebook 呼叫

每個 notebook_execute 請求,若其 code 使用本技能中命名的函數,則會包含此技能 ID:

{ "kernelSkillIds": ["figure-style"], "code": "apply_figure_style()\n..." }

kernelSkillIds 包含技能 ID;函數呼叫位於 code 中。此請求已完整撰寫:請直接呼叫命名的函數,無需新增匯入或發現步驟。

§0 範圍

觸發條件(與系統提示中「出版級圖表」部分的規則相同):此技能適用於最終交付的圖表——那些將出現在報告、論文或匯出成品中,或作為使用者將保留的工件保存的圖表——不適用於探索性/中間性圖表(快速查看、EDA、合理性檢查),這些圖表會在不使用此技能的情況下簡潔繪製。一旦載入,「每個圖表」以下皆指你為交付物渲染的每個圖表。

§1–§3、§8 和 §9 是正確性規則——它們適用於每個圖表、每個情境,且不包含美學內容。§4–§7 是指導方針——預設值會產生乾淨的結果,但可以用特意選擇的替代方案覆蓋(§4–§7 內部陳述事實/感知不變性的個別規則——例如 §4.4 語義零點居中、§4.5 CVD、§6.9 引線錨定——仍然具有約束力)。就其本身而言,此技能是內層(讓單一圖表變好);figure-composer 和 paper-narrative 提供多面板和整篇論文的上下文。


§1 數據忠實度與自洽性

1.1 排除行。 在來源數據中被標記為排除或標誌的行,要麼完全省略,要麼使用視覺上明顯不同的空心/剖面線標記繪製,並在圖例中命名。它絕不會進入與包含行一起繪製的摘要統計量中。

1.2 僅可比較條件。 在不可比較條件下測量的組別(不同的 N、時期預算、初始化、協議)不會作為視覺同級繪製。使用分面斷開或標籤上的標記將它們分開,並在圖說中陳述一次差異。

1.3 自洽性。 圖表內部的每個圖例、閾值和標題都必須被每一條繪製的行滿足。在儲存之前,將每個類別結果標籤回溯到定義它的規則;如果某一行的值與其標籤或標題矛盾,則圖表是錯的,而非數據。

1.4 主張性標題必須為真。 一個句子式標題 (§5.1) 在渲染前會針對軸上的每個類別進行測試。如果有任何一個類別與之矛盾,請限定標題(「在 4 對中的 3 對上」)或將其降級為描述。

1.5 說明 n 值和固定條件。 每個繪製摘要標記的面板都應說明 n 值和重複單位,而每個固定某個變量的小多圖都應說明固定值——在面板中,或當 §2 預算緊張時,在圖說中說明。

1.6 參考結構即是參考。 作為上下文繪製的樹狀圖、排序或拓撲結構(比例尺、類別條)應使用既定的參考,而非從繪製數據推斷出的參考。僅當結構本身即是結果時,才推斷該結構。

1.7 每個主張一個數字。 一個量化主張(執行時間、準確率、計數)在每個面板、圖說和摘要中應只有一個規範值。定義其測量內容,並在所有地方使用該值。


§2 標籤經濟性——下限與上限

圖表展示模式;圖說承載上下文。為一般的科學讀者設計,而非作者。

2.1 下限(不可移除)。 每一種不同的標記、系列、字形或比較對象都必須能僅從圖表中識別。圖說解釋其為何重要,而非其是什麼。如果刪除一個標籤會讓讀者問「那是什麼?」,則該標籤不可移除;只有當問題變成「為什麼它在那裡?」時,它才是可移除的。比較對象的標籤應命名事物本身(「先驗方法」、「無聯合訓練」),絕不能僅用一個角色詞(「基線」、「先前的」)。任何一般科學家無法理解的術語都應加上一個詞的註解。

2.2 上限。 每個面板:標題 + 軸標籤 + 刻度標籤 + 系列識別(每行小多圖標記一次)+ 最多 2–3 個結果註釋。計算字串數量;若超過 6 個(不包括軸/刻度)則表示你過度使用了。上限計算的是敘事性註釋(引用、數值標籤、括號)——識別標籤是下限,不計入預算。

2.3 移至圖說: n=、固定條件、縮寫展開、不可比較的註腳、排除理由、方法論注意事項。

2.4 標題應是重點。 僅看到標題的讀者就知道面板顯示什麼。「對基因丟失具有穩健性」通過;「較少的基因」失敗。測試:大聲冷讀——如果聽者問「較少的基因什麼?」,則重寫。對於一系列改變一個變量的小多圖,取消每個面板的標題,改用一個行標題。

2.5 僅在重點數字上使用標記上數值——即讀者會引用的那個數字。其他所有數值都從軸上讀取。

2.6 有疑問時,刪除標籤並重讀。 如果訊息仍然存在,則該標籤被刪除。


§3 軸、尺度、小多圖

當現有軸需要與全圖設置不同的框架時,調用 set_frame(ax, style=...)。

3.1 軸邊距。 軸的範圍應在數據的每一側留出 ≥ 一個標記半徑的空間;標記和文字絕不能觸碰脊線。在繪圖後使用 ax.margins(0.04),或將範圍延伸超過任何註釋。

3.2 使用軸斷裂代替浪費的範圍。 當數據佔據軸的 <40% 時,請打斷軸,或從數據下限開始,並帶有一個清晰的非零刻度。絕不要在軸斷裂的間隙內繪製參考線、閾值或註釋——間隙沒有坐標。

3.3 對數軸使用人類可讀的刻度——10²、10³,或 1k / 10k / 100k,不要使用原始指數。絕不在對數縮放的數值軸上繪製填充長條圖(長條長度編碼了與任意下限的比例);改用點圖 + 中位數標記。

3.4 小多圖共享軸。 一行或一列小多圖僅顯示一次刻度標籤(最左側/最下方面板);內部面板保留刻度但移除標籤。當面板共享 y 軸且僅 x 變量不同時,將其渲染為緊鄰的子圖(wspace≤0.06),並使用一個行標題。

3.5 填滿框格。 面板的數據範圍應佔據其分配矩形面積的 ≥75%。如果面板的自然長寬比會留下空白區域,請重塑網格(跨行、堆疊互補面板)——不要填充面板。

3.6 好壞方向。 當從軸標籤無法明顯看出較高或較低為佳時,請在邊距中放置一個小型直立提示(「越高越好」)——每行面板一次,絕不每個面板都放,也絕不只在圖說中。嵌入旋轉文字的方向性字形會隨之旋轉;請將提示設為直立。goodness_arrow(ax, ...) 放置此提示。

3.7 物理寬度。 一個 300 dpi 的單行圖表應符合出版物的雙欄寬度。添加示意圖或標籤不應使數據面板比之前更窄。


§4 色彩

4.1 線索。 一旦一種顏色與一個實體(方法、特徵、條件)綁定,就在整個圖表中對該實體的每個標記(線條、填充、標記、文字、熱圖行)重複使用該精確顏色。顏色_就是_交叉參考;讀者不應需要查閱同一圖例兩次。

4.2 限制色相。 僅使用數據所需的盡可能少的相異色相。當圖表將一個焦點系列與其他系列進行比較時,使焦點系列在視覺上佔主導地位(飽和、更粗的線條),並以較低的視覺權重(去飽和、更淺或更細)渲染比較對象。焦點色相不得與同一圖表中使用的任何類別調色盤中的色相重合。即使其標記寬度為零或與其他標記重合,焦點系列也必須保持可識別——透過輪廓、標記或淺色帶。使用 focal_palette(...) 將焦點和比較對象的顏色綁定到有序標籤。

4.3 層級類別。 當類別嵌套時(組內有組),外層選擇色相家族,內層在其內部取樣。

4.4 連續與發散。 對一般連續值使用感知均勻的順序圖;對序數等級或大小使用單色相漸變;對有符號量使用發散圖——始終以語義上有意義的零點(0、1.0 或中位數)為中心,而不是數據中點。

4.5 CVD 安全性。 絕不依賴紅/綠對比來表示二元或對立區分。任何二元對在綠色盲模擬中都應保持可區分。保留一個警報色相用於錯誤/異常/擾動標記,不要將其重複用作數據系列顏色。

4.6 兩個調色盤,兩個圖例。 當一個圖表使用兩種類別色彩系統時,每個圖例應位於其調色盤適用的第一個面板附近。


§5 排版

5.1 句子式標題。 面板標題應以普通語言陳述比較,常規字重,左對齊。度量名稱應放在軸上,而不是標題中。

5.2 角色映射的大小階梯。 一個圖表使用最多三種字體大小,按_角色_而非空間映射:標題/軸標籤/系列識別為基礎大小;圖例/註釋文字小一級;刻度標籤再小一級。面板字母是唯一的例外(粗體,更大)。如果標籤在其角色大小下無法容納,請調整佈局或縮短文字——不要使用中間大小。apply_figure_style(sizes=(8,7,6)) 設定此階梯。當需要一行次要元數據行時,使用 two_tier_label(name, meta) 構建兩行文字。

5.3 命名法。 科學慣例中應斜體的物種、基因和變量名稱,請使用斜體。縮寫代碼繼承此規則;首次出現時展開一次。

5.4 量級後綴。 大數字使用 k / M / B(4.2B、120 kb),而不是逗號分組的完整數字。

5.5 數字註釋。 標記上的數字最多使用 2 位有效數字——除非 2 位有效數字的四捨五入會使兩個不同的行列印出相同的值,在這種情況下,請顯示能區分它們的數字。在填充標記上的文字應達到 ≥4.5:1 的對比度;如果無法達到,請將文字放在標記外部。

5.6 無內部代碼。 軸標籤應使用通俗易懂的名稱;程式碼庫縮寫僅在可讀名稱的括號中或圖說中出現。比較對象系列應按其_是什麼_來標記,而非角色詞。

5.7 面板字母。 粗體,左上角,在軸框外部。大小寫遵循目標出版物的慣例;panel_letter(ax, 'a', case=...) 可處理任一選項。


§6 圖表類型指導(按數據形狀)

6.1 類別 × 數值。 顯示分佈,而不僅僅是摘要。圖表選擇遵循 n:n 小時使用抖動條狀圖加中位數標記;n 大時使用箱形圖或小提琴圖;當平均值是傳達重點時,使用長條圖加疊加的原始點或長條圖加區間。使用 strip_with_median(...) 繪製抖動條狀圖形式,使用 bar_with_points(...) 繪製帶原始點或區間的長條圖。errorbar='ci95' 區間是平均值的 t 分佈 95% 信賴區間(半寬度 t_{0.975,n−1}·s/√n),因此對小 n 也有效。誤差條和原始點疊加是替代方案——同時顯示通常會冗餘。在一個組別中缺失的類別應在其位置上標記(n.d.、— 或剖面線幽靈);空槽位應解讀為零。零值的長條圖應在基線上顯示一個可見的短條或點。

6.2 單一觀測值類別。 使用一個帶有到語義零點的細中性莖的填充點(棒棒糖圖)。數值標籤放在點旁邊。

分組繪圖輔助函數要求每個提供的組別中都有非空、一維、有限的實數觀測值。它們會拒絕繪製任何空組別以及 NaN/Inf 值:明確解決排除問題,報告保留的 n 值,並在適當情況下單獨添加缺失類別標記。它們不會默默地丟棄缺失的觀測值。帶有排除觀測值的遮罩陣列會在轉換前被拒絕;沒有遮罩項目的陣列仍然有效。請求的 SD/CI 區間要求每個組別至少要有兩個觀測值;對於單一觀測值,使用不帶區間的點。標籤和數據組必須對齊。對於 strip_with_median,非空顏色序列會循環;None 或空序列使用預設灰色。空的長條顏色序列使用 Matplotlib 的預設長條顏色;空的 focal_palette 基礎序列使用預設顏色循環。

6.3 連續系列。 每個 x 的平均值以帶有標記的線條顯示;個別運行以它們後方的半透明細線條或點顯示。優先使用直接文字在線條右端標記每個系列,而不是使用圖例框;end_of_line_labels(...) 放置這些標籤。摘要字形(每區間平均值/中位數)應使用不會被誤認為原始觀測值的形狀,在所有系列中相同,並在 z 順序中繪製在原始點下方。

end_of_line_labels 在添加標籤前驗證系列/標籤計數和非空的匹配 x/y 長度。端點必須是有限的;內部間隙可以保留。它訪問每個索引序列的末端,而不複製整個系列。非空顏色序列會循環;None 或空序列使用目前的預設文字顏色。面板字母對於 panel_crops 必須是唯一的。

6.4 共享支撐上的分佈。 當兩個分佈高度重疊時,將它們堆疊為共享 x 軸的小面板或使用山脊線圖。僅當視覺上分離清晰時才進行疊加。

6.5 矩陣。 當熱圖小到可以閱讀時(< ~200 個儲存格),在每個儲存格中列印數值。在色標標籤中陳述一次閾值。

6.6 嵌入。 降維散點圖(UMAP、t-SNE、PCA)應移除刻度和刻度標籤;一個小的角落箭頭對應命名軸。集群應通過細引線連接到周圍空白區域中的文字來標記。

6.7 配對預測與觀察。 將兩者堆疊為具有相同 x 軸和顏色的相鄰軌道;讓對齊承載比較。目標

...

[已截斷以進行翻譯]

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相關技能