mcpField
A
alterlab-scientific-viz

alterlab-scientific-viz

github.com/alterlab-ieuデータ・データベース7871 回インストール5 週間前に更新
リポジトリ

alterlab-scientific-viz について

論文や学術誌への投稿に使う科学図表を作成するスキルです。matplotlib、seaborn、plotly向けに、学術誌別のスタイル、配慮された配色、複数パネル配置、サイズ確認、各種形式への書き出しを扱います。

主な機能

  1. 01学術誌別の図表スタイル適用
  2. 02複数パネル図の作成
  3. 03色覚に配慮した配色
  4. 04図のサイズと可読性の確認
  5. 05PDF、EPS、TIFFなどへの出力

活用シーン

  1. 01学術誌投稿用の図表準備
  2. 02論文内の図表スタイル統一
  3. 03グレースケール対応図の作成
  4. 04投稿規定に沿った確認と書き出し

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/alterlab-ieu/alterlab-academic-skills --skill alterlab-scientific-viz

インストール後、Claude Code で/alterlab-scientific-vizを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/
color_palettes.py
nature.mplstyle
presentation.mplstyle
publication.mplstyle
evals/
evals.json
references/
color_palettes.md
common_tasks.md
journal_requirements.md
matplotlib_examples.md
publication_guidelines.md
seaborn_in_publications.md
scripts/
figure_export.py
style_presets.py

詳細

科学可視化

概要

科学可視化では、データを出版向けの明瞭で正確な図に変換します。複数パネルのレイアウト、エラーバー、有意差マーカー、色覚多様性に配慮した配色を使って、ジャーナル投稿に適したプロットを作成します。matplotlib、seaborn、plotlyを使い、論文原稿向けにPDF/EPS/TIFF形式でエクスポートします。

このスキルを使用する場面

次の場合にこのスキルを使用してください:

  • 科学論文の原稿に掲載するプロットや可視化を作成する
  • ジャーナル投稿用の図を準備する(Nature、Science、Cell、PLOSなど)
  • 図が色覚多様性に配慮し、アクセシブルであることを確認する
  • 一貫したスタイルで複数パネルの図を作成する
  • 図を適切な解像度と形式でエクスポートする
  • 特定の出版ガイドラインに従う
  • 既存の図を出版基準に適合するよう改善する
  • カラーとグレースケールの両方で問題なく表示できる図を作成する
対象外
シナリオ代わりに使用
カスタムプロットを一から構築する、または個々のアーティストやrcParamsを調整するalterlab-matplotlib
データの傾向をざっと確認するための簡易的な探索用統計プロット(ペアプロット、分布など)alterlab-seaborn
ホバーやズーム機能のあるインタラクティブなチャート、またはウェブダッシュボードalterlab-plotly
完成した図の校正(データの忠実性、ラベルの重なり、300-dpiでのエクスポート確認)alterlab-figure-qa
模式図、フローチャート、または経路図alterlab-scientific-schematics

クイックスタートガイド

出版品質の基本的な図
import matplotlib.pyplot as plt
import numpy as np

# Apply publication style (from scripts/style_presets.py)
from style_presets import apply_publication_style
apply_publication_style('default')

# Create figure with appropriate size (single column = 3.5 inches)
fig, ax = plt.subplots(figsize=(3.5, 2.5))

# Plot data
x = np.linspace(0, 10, 100)
ax.plot(x, np.sin(x), label='sin(x)')
ax.plot(x, np.cos(x), label='cos(x)')

# Proper labeling with units
ax.set_xlabel('Time (seconds)')
ax.set_ylabel('Amplitude (mV)')
ax.legend(frameon=False)

# Remove unnecessary spines
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)

# Save in publication formats (from scripts/figure_export.py)
from figure_export import save_publication_figure
save_publication_figure(fig, 'figure1', formats=['pdf', 'png'], dpi=300)
設定済みのスタイルを使用する

assets/ にあるmatplotlibのスタイルファイルを使って、ジャーナル固有のスタイルを適用します:

import matplotlib.pyplot as plt

# Option 1: Use style file directly
plt.style.use('assets/nature.mplstyle')

# Option 2: Use style_presets.py helper
from style_presets import configure_for_journal
configure_for_journal('nature', figure_width='single')

# Now create figures - they'll automatically match Nature specifications
fig, ax = plt.subplots()
# ... your plotting code ...
Seabornでのクイックスタート

統計プロットには、出版向けのスタイル設定を適用したseabornを使用します:

import seaborn as sns
import matplotlib.pyplot as plt
from style_presets import apply_publication_style

# Apply publication style
apply_publication_style('default')
sns.set_theme(style='ticks', context='paper', font_scale=1.1)
sns.set_palette('colorblind')

# Create statistical comparison figure
fig, ax = plt.subplots(figsize=(3.5, 3))
# seaborn >=0.13: pass hue + legend=False to color by category
# (a bare palette= without hue= is deprecated, slated for removal in v0.14)
sns.boxplot(data=df, x='treatment', y='response',
            order=['Control', 'Low', 'High'],
            hue='treatment', palette='Set2', legend=False, ax=ax)
sns.stripplot(data=df, x='treatment', y='response',
              order=['Control', 'Low', 'High'], 
              color='black', alpha=0.3, size=3, ax=ax)
ax.set_ylabel('Response (μM)')
sns.despine()

# Save figure
from figure_export import save_publication_figure
save_publication_figure(fig, 'treatment_comparison', formats=['pdf', 'png'], dpi=300)

基本原則とベストプラクティス

1. 解像度とファイル形式

重要な要件(詳細は references/publication_guidelines.md を参照):

  • ラスター画像(写真、顕微鏡画像):300~600 DPI
  • 線画(グラフ、プロット):600~1200 DPIまたはベクター形式
  • ベクター形式(推奨):PDF、EPS、SVG
  • ラスター形式:TIFF、PNG(科学データにはJPEGを使用しないでください)

実装:

# Use the figure_export.py script for correct settings
from figure_export import save_publication_figure

# Saves in multiple formats with proper DPI
save_publication_figure(fig, 'myfigure', formats=['pdf', 'png'], dpi=300)

# Or save for specific journal requirements
from figure_export import save_for_journal
save_for_journal(fig, 'figure1', journal='nature', figure_type='combination')
2. 色の選択 — 色覚多様性への配慮

色覚多様性に配慮した配色を必ず使用してください(詳細は references/color_palettes.md を参照):

推奨:岡部伊藤の配色(あらゆるタイプの色覚特性を持つ人に識別可能):

# Option 1: Use assets/color_palettes.py
from color_palettes import OKABE_ITO_LIST, apply_palette
apply_palette('okabe_ito')

# Option 2: Manual specification
okabe_ito = ['#E69F00', '#56B4E9', '#009E73', '#F0E442',
             '#0072B2', '#D55E00', '#CC79A7', '#000000']
plt.rcParams['axes.prop_cycle'] = plt.cycler(color=okabe_ito)

ヒートマップ/連続データの場合:

  • 知覚的に均一なカラーマップを使用します:viridis、plasma、cividis
  • 赤と緑の発散型カラーマップは避けます(代わりに PuOr、RdBu、BrBG を使用します)
  • jet または rainbow カラーマップは使用しないでください

図をグレースケールでも必ず確認し、解釈できることを確かめてください。

3. タイポグラフィとテキスト

フォントのガイドライン(詳細は references/publication_guidelines.md を参照):

  • サンセリフフォント:Arial、Helvetica、Calibri
  • 最終的な印刷サイズでの最小文字サイズ:
    • 軸ラベル:7~9 pt
    • 目盛りラベル:6~8 pt
    • パネルラベル:8~12 pt(太字)
  • ラベルは文頭のみ大文字にします:「Time (hours)」ではなく「TIME (HOURS)」
  • 単位は必ず括弧内に記載します

実装:

# Set fonts globally
import matplotlib as mpl
mpl.rcParams['font.family'] = 'sans-serif'
mpl.rcParams['font.sans-serif'] = ['Arial', 'Helvetica']
mpl.rcParams['font.size'] = 8
mpl.rcParams['axes.labelsize'] = 9
mpl.rcParams['xtick.labelsize'] = 7
mpl.rcParams['ytick.labelsize'] = 7
4. 図の寸法

ジャーナルごとの幅(詳細は references/journal_requirements.md を参照):

  • Nature:1段組 89 mm、2段組 183 mm
  • Science:1段組 55 mm、2段組 175 mm
  • Cell:1段組 85 mm、2段組 178 mm

図のサイズが要件に適合しているか確認します:

from figure_export import check_figure_size

fig = plt.figure(figsize=(3.5, 3))  # 89 mm for Nature
check_figure_size(fig, journal='nature')
5. 複数パネルの図

ベストプラクティス:

  • パネルには太字の文字を付けます:A、B、C(大半のジャーナルでは大文字、Natureでは小文字)
  • すべてのパネルで一貫したスタイルを保ちます
  • 可能な場合はパネルの端を揃えます
  • パネル間に十分な余白を設けます

実装例(完全なコードは references/matplotlib_examples.md を参照):

from string import ascii_uppercase

fig = plt.figure(figsize=(7, 4))
gs = fig.add_gridspec(2, 2, hspace=0.4, wspace=0.4)

ax1 = fig.add_subplot(gs[0, 0])
ax2 = fig.add_subplot(gs[0, 1])
# ... create other panels ...

# Add panel labels
for i, ax in enumerate([ax1, ax2, ...]):
    ax.text(-0.15, 1.05, ascii_uppercase[i], transform=ax.transAxes,
            fontsize=10, fontweight='bold', va='top')

一般的なタスク

手順を追って実行するレシピです。完全なコードは references/common_tasks.md と references/matplotlib_examples.md にあります。

  1. 出版品質の折れ線グラフ — スタイル、ジャーナル向けのサイズ、色覚多様性に配慮した色、エラーバー、単位、枠線の削除、ベクター形式でのエクスポート。
  2. 複数パネルの図 — GridSpec によるレイアウト、一貫したスタイル、太字のパネルラベル。
  3. 適切なカラーマップを使ったヒートマップ — 知覚的に均一なカラーマップ(viridis)または色覚多様性に配慮した発散型カラーマップ(RdBu_r)、ラベル付きカラーバー、グレースケールでのテスト。
  4. 特定のジャーナル向けの準備 — configure_for_journal(...) の後に save_for_journal(...) を実行します。
  5. 既存の図の修正 — 出版用チェックリスト(解像度、形式、色、フォント、ラベル、サイズ、グレースケール、不要な装飾)を実行します。
  6. 色覚多様性に配慮した図 — 承認済みのパレット+冗長な符号化(線種、マーカー)+シミュレーターでのテスト。

統計的な厳密性(常に必要): エラーバー(SD/SEM/CIのどれを示すかをキャプションに明記)、サンプルサイズn、有意差マーカー、可能であれば個々のデータ点。

プロットライブラリ — 使い分け

  • Matplotlib — 最も自由度が高く、複雑な複数パネルの図に最適です。例:references/matplotlib_examples.md。
  • Seaborn — 信頼区間とファセットを自動で処理する、高水準の統計グラフィックスです。詳しいガイド:references/seaborn_in_publications.md。
  • Plotly — インタラクティブな探索向けです。fig.write_image('figure.png', scale=3) で静的な画像としてエクスポートできます(約300 DPI)。kaleido >= 1 と Chrome が必要です(plotly_get_chrome を一度実行してください)。matplotlib_examples.md の例8を参照してください。

リソース

References ディレクトリ

詳細情報が必要な場合は、以下を読み込んでください。

  • publication_guidelines.md:出版に関する包括的なベストプラクティス

    • 解像度とファイル形式の要件
    • タイポグラフィのガイドライン
    • レイアウトと構成のルール
    • 統計的な厳密性に関する要件
    • 出版用の完全なチェックリスト
  • color_palettes.md:色の使い方ガイド

    • RGB値付きの色覚多様性に配慮したパレットの仕様
    • シーケンシャル型および発散型カラーマップの推奨事項
    • アクセシビリティのテスト手順
    • 分野別パレット(ゲノミクス、顕微鏡画像)
  • journal_requirements.md:ジャーナルごとの仕様

    • 出版社別の技術要件
    • ファイル形式とDPIの仕様
    • 図の寸法に関する要件
    • クイックリファレンステーブル
  • matplotlib_examples.md:実用的なコード例

    • 動作する完全な例10件
    • 折れ線グラフ、棒グラフ、ヒートマップ、複数パネルの図
    • ジャーナル向けの図の例
    • 各ライブラリ(matplotlib、seaborn、plotly)のヒント
Scripts ディレクトリ

自動化には、以下のヘルパースクリプトを使用してください。

  • figure_export.py:エクスポート用ユーティリティ

    • save_publication_figure():適切なDPIで複数の形式に保存します
    • save_for_journal():ジャーナル固有の要件を自動的に適用します
    • check_figure_size():寸法がジャーナルの仕様を満たしているか確認します
    • 例を実行するには、python scripts/figure_export.py を直接実行してください
  • style_presets.py:設定済みのスタイル

    • apply_publication_style():プリセットスタイル(default、nature、science、cell)を適用します
    • set_color_palette():パレットをすばやく切り替えます
    • configure_for_journal():ジャーナル向けの設定を1つのコマンドで行います
    • 例を見るには、python scripts/style_presets.py を直接実行してください
Assets ディレクトリ

図には以下のファイルを使用してください。

  • color_palettes.py:インポート可能な色定義

    • 推奨パレットをすべてPython定数として収録
    • apply_palette() ヘルパー関数
    • ノートブック/スクリプトに直接インポートできます
  • Matplotlib スタイルファイル:plt.style.use() で使用します

    • publication.mplstyle:一般的な出版品質向け
    • nature.mplstyle:Nature誌の仕様
    • presentation.mplstyle:ポスター/スライド向けの大きなフォント

ワークフローの概要

論文掲載用の図を作成する際の推奨ワークフロー:

  1. 計画:投稿先のジャーナル、図の種類、内容を決定します
  2. 設定:ジャーナルに適したスタイルを適用します
    from style_presets import configure_for_journal
    configure_for_journal('nature', 'single')
    
  3. 作成:適切なラベル、色、統計情報を用いて図を作成します
  4. 確認:サイズ、フォント、色、アクセシビリティを確認します
    from figure_export import check_figure_size
    check_figure_size(fig, journal='nature')
    
  5. エクスポート:指定された形式で保存します
    from figure_export import save_for_journal
    save_for_journal(fig, 'figure1', 'nature', 'combination')
    
  6. レビュー:原稿に組み込んだ状態で最終サイズの図を確認します

避けるべきよくある落とし穴

  1. フォントが小さすぎる:最終サイズで印刷すると文字が読めません
  2. JPEG形式:グラフやプロットには決してJPEGを使用しないでください(アーティファクトが発生します)
  3. 赤と緑の色:男性の約8%は区別できません
  4. 解像度が低い:論文掲載時に図が粗くなります
  5. 単位の記載漏れ:軸には必ず単位を付記してください
  6. 3D効果:認識を歪めるため、完全に避けてください
  7. 不要な装飾:不要なグリッド線や装飾を取り除いてください
  8. 切り詰められた軸:科学的に正当化できる場合を除き、棒グラフはゼロから始めてください
  9. スタイルの不統一:同じ原稿内の図で異なるフォントや色を使わないでください
  10. エラーバーがない:不確実性は必ず示してください

最終チェックリスト

図を投稿する前に、以下を確認してください:

  • 解像度がジャーナルの要件を満たしている(300+ DPI)
  • ファイル形式が適切である(プロットにはベクター形式、画像にはTIFF)
  • 図のサイズがジャーナルの仕様に合っている
  • 最終サイズで文字がすべて読める(≥6 pt)
  • 色が色覚多様性に配慮している
  • グレースケールでも図が判読できる
  • すべての軸に単位が記載されている
  • エラーバーがあり、キャプションにその定義が記載されている
  • パネルラベルがあり、表記が統一されている
  • 不要な装飾や3D効果がない
  • すべての図でフォントが統一されている
  • 統計的有意性が明確に示されている
  • 凡例が明確で、必要な情報がそろっている

このスキルを使って、すべての読者が利用しやすい状態を保ちながら、科学図が最高水準の論文掲載基準を満たすようにしてください。

コメント