mcpField
M
matplotlib-best-practices

matplotlib-best-practices

github.com/mindrallyデータ・データベース2871.0k 回インストール3 週間前に更新
リポジトリ

matplotlib-best-practices について

Matplotlib で可視化を作成する Python 開発者向けの実践的なガイドです。グラフの選択やレイアウトから、アクセシブルな配色、出力設定までを扱い、探索的な作図と公開用の図の両方を支援します。

主な機能

  1. 01オブジェクト指向の作図指針
  2. 02グラフ種類の選択
  3. 03ラベルと注釈
  4. 04アクセシブルな配色
  5. 05レイアウトと出力設定
  6. 06描画パフォーマンスの工夫

活用シーン

  1. 01Jupyter notebooks でのデータ探索
  2. 02出版用図表の作成
  3. 03Web やプレゼン向けの図の出力

インストール

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

$npx skills add https://github.com/mindrally/skills --skill matplotlib-best-practices

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

詳細

Matplotlib のベストプラクティス

データ可視化、プロット、出版品質の図の作成に重点を置いた、Matplotlib 開発のための専門的なガイドラインです。

コードのスタイルと構成

  • 正確な Matplotlib の例を用いて、簡潔で技術的な Python コードを書きます
  • 適切なラベル、タイトル、凡例を付け、情報量が多く見やすいプロットを作成します
  • 複雑な図にはオブジェクト指向 API を、手早いプロットには pyplot を使用します
  • PEP 8 のスタイルガイドラインに従います
  • すべての可視化で色覚特性へのアクセシビリティを考慮します

API の使い方

オブジェクト指向インターフェース(推奨)
  • 明示的に制御するには fig, ax = plt.subplots() を使用します
  • 複雑な図や本番コードに適しています
  • メソッドは Axes オブジェクトに対して呼び出します:ax.plot()、ax.set_xlabel()
  • 複数のサブプロットやきめ細かなカスタマイズが可能です
Pyplot インターフェース
  • 手早くインタラクティブなプロットを作成するには、plt.plot()、plt.xlabel() を使用します
  • Jupyter ノートブックでの作業や探索に適しています
  • Jupyter ノートブックでは %matplotlib inline を使用します

効果的な可視化の作成

プロットの種類と選び方
  • 折れ線プロット(ax.plot()):連続データや傾向を示す場合
  • 散布図(ax.scatter()):変数間の関係を示す場合
  • 棒グラフ(ax.bar()、ax.barh()):カテゴリ間を比較する場合
  • ヒストグラム(ax.hist()):分布を示す場合
  • 箱ひげ図(ax.boxplot()):統計的な要約を示す場合
  • ヒートマップ(ax.imshow()、ax.pcolormesh()):2D データを示す場合
ラベルと注釈
  • 単位を含む軸ラベルを必ず付けます
  • 伝えたい内容が明確に分かるタイトルを付けます
  • 複数のデータ系列がある場合は凡例を追加します
  • 注釈(ax.annotate())を使って重要な点を強調します
  • 必要に応じてデータソースを明記します
色とスタイル
  • 色覚特性に配慮したカラーパレット(例:'viridis'、'plasma'、'cividis')を使用します
  • アクセシビリティのため、赤と緑の組み合わせは避けます
  • 図をまたいで、同じカテゴリには一貫した色を使用します
  • データの種類に適したカラーマップを使用します:
    • 連続データ:'viridis'、'plasma' などの逐次型
    • 意味のある中央値を持つデータ:'RdBu'、'coolwarm' などの発散型
    • カテゴリデータ:'Set1'、'tab10' などの定性型

図のレイアウトと構成

サブプロット
  • グリッド状に配置するには plt.subplots(nrows, ncols) を使用します
  • 複雑で不均一なレイアウトには gridspec を使用します
  • 比較する場合は sharex=True、sharey=True で軸を共有します
  • 重なりを防ぐには constrained_layout=True または tight_layout() を使用します
図のサイズと解像度
  • 図のサイズを明示的に設定します:figsize=(width, height)(単位:インチ)
  • 出力先に適した DPI を使用します(画面表示は 72、印刷は 300 以上)
  • 標準的なサイズ:(10, 6)はプレゼンテーション用、(8, 6)は論文用です

カスタマイズ

スタイルシート
  • 組み込みスタイルを使用します:plt.style.use('seaborn-v0_8')、'ggplot'
  • ブランドイメージを一貫させるには、カスタムスタイルファイルを作成します
  • スタイルを組み合わせます:plt.style.use(['seaborn-v0_8', 'custom.mplstyle'])
テキストとフォント
  • 数式の表記には LaTeX を使用します:r'$\alpha = \frac{1}{2}$'
  • 一貫性を保つため、フォントファミリーを設定します
  • 表示サイズで読みやすくなるようにフォントサイズを調整します

保存とエクスポート

ファイル形式
  • 出版物にはベクター形式(PDF、SVG、EPS)を使用します
  • 透明度が必要なウェブやプレゼンテーションには PNG を使用します
  • JPEG は写真に限って使用します(非可逆圧縮)
エクスポート設定
  • 余分な余白を削除するには bbox_inches='tight' を使用します
  • 背景色には facecolor を設定します
  • 用途に適した dpi を指定します
  • オーバーレイには transparent=True を使用します

パフォーマンスの最適化

  • 点の多い散布図には rasterized=True を使用します
  • 可視化用にデータをダウンサンプリングすることを検討します
  • 保存後は plt.close() で図を閉じます
  • 多数の図を作成するループでは plt.close('all') を使用します

主な規約

  • import matplotlib.pyplot as plt としてインポートします
  • 本番コードではオブジェクト指向 API を使用します
  • 軸には必ずラベルと単位を付けます
  • 想定する表示サイズで可視化をテストします
  • 色を選ぶ際はアクセシビリティを考慮します

コメント