matplotlib-best-practices について
Matplotlib で可視化を作成する Python 開発者向けの実践的なガイドです。グラフの選択やレイアウトから、アクセシブルな配色、出力設定までを扱い、探索的な作図と公開用の図の両方を支援します。
主な機能
- 01オブジェクト指向の作図指針
- 02グラフ種類の選択
- 03ラベルと注釈
- 04アクセシブルな配色
- 05レイアウトと出力設定
- 06描画パフォーマンスの工夫
活用シーン
- 01Jupyter notebooks でのデータ探索
- 02出版用図表の作成
- 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 を使用します
- 軸には必ずラベルと単位を付けます
- 想定する表示サイズで可視化をテストします
- 色を選ぶ際はアクセシビリティを考慮します
コメント
Markdown 対応