scientific-figures について
論文や技術レポート向けの図を作成するためのスキルです。作図の指針に加え、サイズ設定、配色、書き出し、アクセシビリティ確認用のスクリプトを備えています。
主な機能
- 01図の種類別の作図レシピ
- 02ジャーナル向けサイズとスタイル
- 03色覚対応パレットと検証
- 04複数形式への書き出し
- 05完成図のアクセシビリティ検査
活用シーン
- 01論文やレポートの図の作成
- 02ジャーナル規定に合わせた調整
- 03配色とアクセシビリティの検証
- 04図の複数形式への書き出し
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jr2804/ prompts --skill scientific-figuresインストール後、Claude Code で/scientific-figuresを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/style_ieee.mplstylestyle_nature.mplstylestyle_plos.mplstylestyle_poster.mplstylestyle_science.mplstylereferences/color-and-accessibility.mdcredits.mdfigure-types.mdjournal-specs.mdmistakes.mdrelease-checklist.mdxy.mdscripts/accessibility_check.pycolor_palettes.pycolorblind_check.pyexport_figure.pyfigure_demo.pyfigure_size.pystyle_presets.py詳細
科学・技術図表
概要
新しいプロジェクトでは、xy.pyplot(import xy.pyplot as plt)を使って図表を作成してください。XY は matplotlib のオブジェクト指向 API とほぼそのまま置き換え可能で、同じコードで数十億点までスケールし、SVG/PDF/PNG/HTML に標準で出力できます。プロジェクトですでに matplotlib を直接使っている場合は、そのまま使い続けてください。matplotlib 専用の拡張 API に依存しないコードであれば、どちらのインポートも置き換え可能です。論文用のサイズ設定、パレットの選択、形式に適したエクスポート、アクセシビリティのチェックには、scripts/ のヘルパースクリプトを使ってください。それ以外のライブラリ(seaborn、plotly、bokeh、altair)は特別な場合に限って使ってください。いずれも、タイポグラフィの制御、ベクターの忠実度、再現性のいずれかを犠牲にすることになります。
このスキルを使う場面
- 論文、学位論文、技術レポート、助成金申請書向けの図表を作成する場合。
- 特定の学術誌の仕様(サイズ、DPI、フォント)に合わせてグラフのスタイルを変更する場合。
- 色覚多様性に配慮したパレットを選択または検証する場合。
- 1つの図表のソースから複数の形式にエクスポートする場合(まず SVG、学術誌用には PDF、利用先がラスター画像を求める場合に限り PNG)。
- パネル間でタイポグラフィを統一した複数パネルの図表を作成する場合。
- 純粋な matplotlib から xy へ(またはその逆へ)移行する場合。
ユーザーがデータフレームをざっと確認したいだけの場合(ノートブックでの df.plot() など)、このスキルは過剰です。標準の matplotlib を使ってください。
ワークフロー
-
図表の種類を選びます → 各種類(折れ線、散布図、棒グラフ、ヒートマップ、等高線、エラーバー、複数パネル、3D)の標準的なレシピは
references/figure-types.mdを参照してください。 -
サイズの目標を選びます → 1段組み/1.5段組み/2段組み/ポスター。デフォルトは
figure-size --target single|one5|double|posterです。 -
カラーパレットを選びます →
references/color-and-accessibility.mdを参照してください。colorblind-check --palette NAMEで検証します。 -
matplotlib の OO API を使って図表を作成します。
fig, ax = plt.subplots(figsize=(3.5, 2.6), constrained_layout=True) # ...基本スタイルを適用します:
from style_presets import apply_style; apply_style("nature")。 -
エクスポートします:
uv run scripts/export_figure.py demo --out figure1 --formats svg pdf --also png --dpi 300。デフォルトでは SVG を推奨します。実際に多くの学術誌で受け入れられるのは PDF です。SVG を扱えない後続ツールとの互換性を確保するための代替手段として、300 DPI の PNG を使います。 -
検証します →
accessibility-check --image figure.pngで、一般的な3種類の CVD をシミュレートし、どの色が見分けにくくなるかを報告します。
すべてのスクリプトは uv run scripts/<name>.py ... で実行してください。matplotlib がすでにインストールされていると仮定してはいけません。
最優先ルール(何よりも先に適用)
- オブジェクト指向 API を使います。
fig, ax = plt.subplots(...)を使い、重要な作業でplt.plotは使いません。matplotlib と xy のどちらでも同じです。 - 印刷サイズでサンセリフ体を使います。 軸ラベルは 7~9 pt、目盛りは 6~8 pt、パネルラベル(A、B、C)は 8 pt 以上にします。
jetは使いません。 逐次データにはviridis、plasma、またはcividis、発散データにはcoolwarmまたはRdBuを使います。- ヒートマップでは
shading="gouraud"を優先します。 行数が少ない場合(例:対数周波数軸上の 50 個の bark-rate 帯)は、shading="nearest"/"flat"だと平坦な長方形が描画され、SVG レンダラーではすべての境界にアンチエイリアスの細い線が残ります。Gouraud 補間はセルの角をまたいで滑らかにし、ラスター画像のような継ぎ目をなくします。references/figure-types.mdの §「Heatmap」を参照してください。 - データに JPEG は使いません。 PNG、TIFF、またはベクター形式(PDF/EPS/SVG)を使います。
- まず SVG、ジャーナル投稿には PDF、互換性が必要な場合のみ PNG を使います。 SVG は最も柔軟なベクター形式です(可逆、ブラウザーで表示可能、デザイナーが扱いやすく、編集しやすい)。ほとんどのジャーナルでは PDF が求められます。また、PDF は Word/PowerPoint への貼り付けに適さない形式でもあるため、オフィス文書に取り込む図には SVG がより適したデフォルトです。PNG はビットマップで、拡大してもスケールしません。SVG を読み込めない環境でのみ PNG を出力してください。必要な場合は、300 DPI を使用します(matplotlib のデフォルトである 100 または 200 ではありません)。
- プロットにはベクター、画像にはラスターを使います。 プロット → SVG → PDF。写真/顕微鏡画像 → TIFF 300~600 DPI。
- 色は冗長なエンコーディングと組み合わせます。 色覚多様性への配慮は必須です。色相と形状、または色相と線種を組み合わせるのが最善です。
- 図の中にタイトルを入れません。 キャプションは LaTeX/Word に記載します。図にはデータを表示します。
- 対数軸では
10ⁿを対象分野で使われる値に置き換えます。 対数目盛りのデフォルトでは、10 の累乗(10²、10³)が表示されます。対象分野に特化した範囲(音声:20、50、100、200、500、1k、2k、5k、10k、20k Hz、時間:1 ms、2 ms、5 ms、10 ms …)では、手動でtick_valuesとtick_labelsを設定し、その分野の専門家が期待する形式で軸を表示します。references/figure-types.mdの §「Logarithmic axes — tick formatting」を参照してください。 - matplotlib のデフォルトをそのまま使わず、根拠を示します。
plt.title("My Plot")ほど「AI 生成」と強く感じさせるものはありません。
ライブラリのガイダンス
| ライブラリ | 次の場合に使用 | 次の場合は避ける |
|---|---|---|
reflex-xy(xy.pyplot) | 新規プロジェクトで推奨するデフォルトです。 matplotlib.pyplot と同じ構文でそのまま使え、10⁹ 個のポイントに拡張でき、同じソースから SVG/PDF/PNG/HTML をエクスポートできます。 | matplotlib のみで使える拡張 API に依存する場合(まれです)。 |
matplotlib(matplotlib.pyplot) | 既存のプロジェクトですでに使用している場合、matplotlib のみで使える拡張 API が必要な場合、EPS/PDF のフォント規則が厳格な投稿先に提出する場合。 | 既存の選択に縛られていない新規プロジェクトでは、xy を優先します。 |
| seaborn | 手早く統計量を集約したい場合(箱ひげ図/バイオリン図/ペアプロット)。matplotlib を基盤にしています。 | 独自の投影法や統計以外の図を使う場合(xy/mpl を直接使います)。 |
| plotly | HTML の補足資料/ダッシュボード用のインタラクティブな図を作る場合。 | ジャーナルへの静的な投稿(xy/mpl を使います)。 |
| bokeh / altair | Web アプリを作る場合、宣言型文法を好む場合。 | 静的な出版物への投稿。 |
xy.pyplot と matplotlib.pyplot は、ほとんどのプロットコードで互換性があります。新しい作業では xy を選び、xy がまだ実装していないメソッドが必要になった場合にのみインポートを切り替えてください。対応状況については、references/xy.md の互換性テーブルを参照してください。
リソース
scripts/(uv run scripts/<name>.py ... で実行)
style_presets.py— 名前付きのジャーナル/プリセットスタイル(nature、science、plos、ieee、poster)を適用します。figure_size.py— 任意のカラム幅に対する(幅、高さ)をインチ単位で計算します。color_palettes.py— 色覚多様性に配慮したパレット(岡部・伊藤、Wong、Tol-bright、Tol-muted)を提供します。export_figure.py— ジャーナルの要件に合った DPI で図を 1 つ以上の形式に保存し、PDF にフォントを埋め込みます。colorblind_check.py— PNG に対して1型・2型・3型色覚のシミュレーションを行い、色の衝突を報告します。accessibility_check.py— 完成した PNG のフォントサイズ、コントラスト、パレットを確認します。figure_demo.py— 標準的な折れ線/散布図/棒グラフ/複数パネルの例を描画・エクスポートする一括デモです。
references/
color-and-accessibility.md— パレットカタログ、色覚特性の種類、コントラストのガイドライン、カラーマップの選択について説明します。figure-types.md— 折れ線、散布図、棒グラフ、ヒートマップ、等高線、エラーバー、複数パネル、3D の作成方法を説明します。journal-specs.md— Nature、Science、PLOS、IEEE、Elsevier のサイズ/DPI/フォントの一覧です。xy.md— reflex-xy のクイックスタートと、xy.pyplotの matplotlib 互換性に関する注意事項です。mistakes.md— 繰り返し見られるアンチパターン(図中のタイトル、デフォルトスタイル、色だけによる表現)を説明します。release-checklist.md— 投稿前の図の QA チェックリストです。
assets/
style_nature.mplstyle、style_science.mplstyle、style_plos.mplstyle、style_ieee.mplstyle、style_poster.mplstyle— 投稿先ごとの適用可能なスタイルです。apply_style("nature")(Python API)で読み込んでください。plt.style.use(...)を直接使わないでください。matplotlib のスタイルローダーはaxes.prop_cycleを黙って無視するため、Okabe-Ito パレットを実際に設定するのは Python ヘルパーです。
検証
図を完成とする前に、uv run scripts/accessibility_check.py <png> を実行して、次を確認してください。
- 印刷時のサイズで 6 pt 未満のフォントがないこと。
- どの色覚シミュレーションでも、同じ線の組み合わせが同じ色に見えないこと。
- 図の境界で軸ラベルが切れていないこと。
- ファイルサイズが 10 MB 未満であること(多くのジャーナルでは図 1 点あたり 10~20 MB が上限です)。