matplotlib-best-practices
Pythonでのデータ可視化において、Matplotlibのベストプラクティスに従ったグラフ作成や、論文・出版物に耐えうる高品質な図の生成をサポートします。プロットのスタイル設定やレイアウト調整など、実践的な場面で活用できます。
description の原文を見る
Best practices for Matplotlib data visualization, plotting, and creating publication-quality figures in Python
SKILL.md 本文
Matplotlib ベストプラクティス
Matplotlib開発のための専門的ガイドライン。データビジュアライゼーション、プロット作成、出版品質の図形生成に焦点を当てています。
コードスタイルと構造
- 簡潔で技術的なPythonコードと正確なMatplotlibの例を作成する
- 適切なラベル、タイトル、凡例を備えた情報的で視覚的に魅力的なプロットを作成する
- 複雑な図形ではオブジェクト指向APIを使用し、クイックプロットではpyplotを使用する
- PEP 8スタイルガイドラインに従う
- すべてのビジュアライゼーションで色覚異常のアクセシビリティを考慮する
APIアプローチ
オブジェクト指向インターフェース(推奨)
fig, ax = plt.subplots()を使用して明示的な制御を行う- 複雑な図形と本番環境コード向けが推奨される
- メソッドはaxesオブジェクト上で呼び出される:
ax.plot(),ax.set_xlabel() - 複数のサブプロットと細粒度のカスタマイズを可能にする
Pyplotインターフェース
- クイックで対話的なプロットには
plt.plot(),plt.xlabel()を使用する - Jupyter notebooksと探索的分析に適している
- Jupyter notebooksでは
%matplotlib inlineを使用する
効果的なビジュアライゼーション作成
プロットタイプと選択
- ラインプロット(
ax.plot())は連続データとトレンド向け - 散布図(
ax.scatter())は変数間の関係向け - 棒グラフ(
ax.bar(),ax.barh())はカテゴリ比較向け - ヒストグラム(
ax.hist())は分布向け - ボックスプロット(
ax.boxplot())は統計的要約向け - ヒートマップ(
ax.imshow(),ax.pcolormesh())は2次元データ向け
ラベルと注釈
- 常に軸ラベルに単位を含める
- メッセージを伝える説明的なタイトルを使用する
- 複数のシリーズが存在する場合は凡例を追加する
- 注釈(
ax.annotate())を使用して重要なポイントをハイライトする - 適切な場合はデータソースの帰属を含める
色とスタイル
- 色覚異常対応のカラーパレットを使用する(例:'viridis', 'plasma', 'cividis')
- アクセシビリティのため赤緑の組み合わせを避ける
- 複数の図形で同じカテゴリに一貫した色を使用する
- データタイプに応じた適切なカラーマップを使用する:
- Sequential: 連続データには'viridis', 'plasma'
- Diverging: 意味のある中心を持つデータには'RdBu', 'coolwarm'
- Qualitative: カテゴリカルデータには'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を使用する
- 常に軸にラベルを付け、単位を含める
- 目的の表示サイズでビジュアライゼーションをテストする
- 色の選択でアクセシビリティを考慮する
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- mindrally
- リポジトリ
- mindrally/skills
- ライセンス
- Apache-2.0
- 最終更新
- 不明
Source: https://github.com/mindrally/skills / ライセンス: Apache-2.0
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。