Matplotlib リファレンスドキュメント
Matplotlib は Python で最も広く使用されているデータ可視化ライブラリであり、静的、動的、およびインタラクティブなグラフを作成できます。
このドキュメントは、Matplotlib のすべての公開インターフェースの関数とメソッドを完全にまとめており、対応する機能と使用方法をすばやく参照できます。
2つのプログラミングインターフェース
Matplotlib は2つの使用方法を提供しており、さまざまなシナリオに適しています。
| 特性 | Axes インターフェース(明示的/オブジェクト指向) | pyplot インターフェース(暗黙的/関数型) |
|---|---|---|
| 使用方法 | 最初に Figure と Axes オブジェクトを作成し、次にオブジェクトメソッドを呼び出す | pyplot モジュールの関数を直接呼び出し、現在のグラフを暗黙的に操作する |
| 適用シーン | 複雑なグラフ、複数のサブプロット、細かい制御が必要な場合 | 高速プロット、インタラクティブな探索、単純なグラフ |
| コード例 | fig, ax = plt.subplots(); ax.plot(x, y) | plt.plot(x, y); plt.title("标题") |
| 推奨度 | 推奨(より明確で、より制御しやすい) | 単純なシナリオと迅速なプロトタイピングに適しています |
Axes インターフェースは公式推奨のプログラミング方法であり、コードロジックがより明確で、複数のサブプロットや複雑なグラフを扱う際にエラーが発生しにくくなります。簡単に参照できるように、以下では pyplot 関数と対応する Axes メソッドを併記しています。
| 関数 | 関連内容 |
|---|---|
| Matplotlib plot() 関数 | plot() |
| Matplotlib scatter() 関数 | scatter() |
| Matplotlib bar() / barh() 関数 | bar(), barh(), bar_label(), grouped_bar() |
| Matplotlib hist() 関数 | hist() |
| Matplotlib pie() 関数 | pie(), pie_label() |
| Matplotlib imshow() 関数 | imshow() |
| Matplotlib subplots() 関数 | subplots() |
| Matplotlib figure() 関数 | figure() |
| Matplotlib savefig() 関数 | savefig() |
| Matplotlib errorbar() 関数 | errorbar() |
| Matplotlib boxplot() 関数 | boxplot() |
| Matplotlib contour() / contourf() 関数 | contour(), contourf(), clabel() |
| Matplotlib fill_between() / fill_betweenx() 関数 | fill_between(), fill_betweenx() |
| Matplotlib legend() 関数 | legend() |
| Matplotlib text() / annotate() 関数 | text(), annotate() |
| Matplotlib タイトルとラベル関数 | title(), xlabel(), ylabel(), suptitle(), supxlabel(), supylabel() |
| Matplotlib colorbar() 関数 | colorbar() |
| Matplotlib Figure と Axes 管理関数 | axes(), cla(), clf(), close(), delaxes(), fignum_exists(), gca(), gcf(), get_figlabels(), get_fignums(), sca(), subplot(), subplot2grid(), subplot_mosaic(), twinx(), twiny() |
| Matplotlib 高度なプロット関数 | step(), stem(), eventplot(), stackplot(), broken_barh(), vlines(), hlines(), fill(), loglog(), semilogx(), semilogy() |
| Matplotlib スパンとベクトル場の関数 | axhline(), axhspan(), axvline(), axvspan(), axline(), quiver(), quiverkey(), barbs(), streamplot() |
| Matplotlib スペクトル分析関数 | acorr(), xcorr(), psd(), csd(), specgram(), cohere(), angle_spectrum(), magnitude_spectrum(), phase_spectrum() |
| Matplotlib 2次元データと統計グラフ関数 | hist2d(), hexbin(), stairs(), matshow(), pcolor(), pcolormesh(), spy(), figimage(), ecdf(), violinplot() |
| Matplotlib 三角形メッシュと極座標関数 | triplot(), tripcolor(), tricontour(), tricontourf(), polar(), rgrids(), thetagrids() |
| Matplotlib 軸設定関数 | xlim(), ylim(), xscale(), yscale(), xticks(), yticks(), tick_params(), ticklabel_format(), locator_params(), minorticks_on(), minorticks_off(), grid(), axis(), box(), autoscale() |
| Matplotlib レイアウトと設定関数 | subplots_adjust(), tight_layout(), margins(), subplot_tool(), rc(), rc_context(), rcdefaults(), clim(), get_cmap(), set_cmap(), gci(), sci(), imread(), imsave(), draw(), ion(), ioff(), pause(), switch_backend(), show(), isinteractive(), install_repl_displayhook(), uninstall_repl_displayhook(), draw_if_interactive() |
| Matplotlib ツールとインタラクション関数 | connect(), disconnect(), ginput(), waitforbuttonpress(), findobj(), get(), setp(), getp(), get_current_fig_manager(), new_figure_manager(), set_loglevel(), xkcd() |
| Matplotlib Fig レベルのテキストと注釈関数 | figtext(), figlegend(), table(), arrow() |
pyplot モジュール - 全関数リスト
pyplot は Matplotlib のトップレベルインターフェースであり、MATLAB に似たプロット体験を提供します。以下に公式分類に従ってすべての関数を示します。
1. Figure と Axes の管理
Figure(キャンバス)と Axes(座標系/サブプロット)を作成および管理する関数。
| 関数 | 機能説明 |
|---|---|
| figure() | 新しい Figure を作成するか、既存の Figure をアクティブにする |
| subplots() | 推奨Figure と一連の Axes サブプロットを作成する |
| subplot() | 現在の Figure に単一のサブプロットを追加する(行と列のインデックスによる) |
| subplot2grid() | グリッドレイアウトの指定位置にサブプロットを作成する |
| subplot_mosaic() | ラベル文字列を使用して複雑な不均一レイアウトを作成する |
| axes() | 現在の Figure に Axes を追加する |
| gca() | 現在の Axes オブジェクトを取得する |
| gcf() | 現在の Figure オブジェクトを取得する |
| sca() | 現在の Axes を設定する |
| cla() | 現在の Axes をクリアする |
| clf() | 現在の Figure をクリアする |
| close() | Figure ウィンドウを閉じる |
| delaxes() | Figure から指定された Axes を削除する |
| fignum_exists() | 指定された番号の Figure が存在するか確認する |
| get_figlabels() | すべての Figure のラベルリストを返す |
| get_fignums() | すべての Figure の番号リストを返す |
| twinx() | 共有 x 軸を持つ双 y 軸を作成する |
| twiny() | 共有 y 軸を持つ双 x 軸を作成する |
2. 基本的なプロット
最も一般的に使用されるグラフタイプの描画関数。
| 関数 | 機能説明 |
|---|---|
| plot() | 折れ線グラフを描画する(最も一般的) |
| scatter() | 散布図を描画し、サイズ/色/透明度のマッピングをサポート |
| bar() | 垂直棒グラフを描画する |
| barh() | 水平棒グラフを描画する |
| bar_label() | 棒グラフのバーに数値ラベルを追加する |
| grouped_bar() | グループ化された棒グラフを描画する |
| pie() | 円グラフを描画する |
| pie_label() | 円グラフにラベルを追加する |
| stem() | ステムプロット(マッチ棒グラフ)を描画する |
| eventplot() | イベントプロット(複数の水平線でイベント位置をマーク)を描画する |
| step() | ステップグラフを描画する |
| fill() | 塗りつぶし多角形を描画する |
| fill_between() | 2本の水平曲線の間の領域を塗りつぶす |
| fill_betweenx() | 2本の垂直曲線の間の領域を塗りつぶす |
| stackplot() | 積み上げ面積グラフを描画する |
| broken_barh() | 水平のブロークンバープロット(ガントチャート風)を描画する |
| vlines() | 垂直基準線を描画する |
| hlines() | 水平基準線を描画する |
| errorbar() | 誤差範囲付き折れ線グラフを描画する |
| loglog() | 両対数座標の折れ線グラフ |
| semilogx() | x 軸対数座標の折れ線グラフ |
| semilogy() | y 軸対数座標の折れ線グラフ |
| polar() | 極座標系でプロットする |
3. スパン(Spans)
水平および垂直の基準線と着色領域を描画する。
| 関数 | 機能説明 |
|---|---|
| axhline() | Axes を横切る水平線を追加する |
| axhspan() | Axes を横切る水平着色帯を追加する |
| axvline() | Axes を縦断する垂直線を追加する |
| axvspan() | Axes を縦断する垂直着色帯を追加する |
| axline() | 2点を通る無限に長い直線を追加する |
4. スペクトル分析
信号処理とスペクトル可視化のための関数。
| 関数 | 機能説明 |
|---|---|
| acorr() | 自己相関プロットを描画する |
| xcorr() | 相互相関プロットを描画する |
| angle_spectrum() | 角度スペクトルを描画する |
| magnitude_spectrum() | 振幅スペクトルを描画する |
| phase_spectrum() | 位相スペクトルを描画する |
| psd() | パワースペクトル密度を描画する |
| csd() | クロススペクトル密度を描画する |
| cohere() | コヒーレンスを描画する |
| specgram() | スペクトログラム(時間周波数プロット)を描画する |
5. 統計グラフ
統計分布に関連するグラフを描画する。
| 関数 | 機能説明 |
|---|---|
| boxplot() | 箱ひげ図を描画する |
| violinplot() | バイオリン図を描画する |
| ecdf() | 経験累積分布関数(ECDF)を描画する |
6. ビニングとヒストグラム
| 関数 | 機能説明 |
|---|---|
| hist() | 1次元ヒストグラムを描画する |
| hist2d() | 2次元ヒストグラムを描画する |
| hexbin() | 六角形ビンプロットを描画する |
| stairs() | ステップヒストグラムを描画する(新版、hist の step モードの代替) |
7. 等高線
| 関数 | 機能説明 |
|---|---|
| contour() | 等高線を描画する |
| contourf() | 塗りつぶし等高線を描画する |
| clabel() | 等高線にラベルを追加する |
8. 2次元配列と画像
2次元データ、行列、画像を表示する可視化関数。
| 関数 | 機能説明 |
|---|---|
| imshow() | 画像または2次元配列(ヒートマップ)を表示する |
| matshow() | 行列を新しい Figure の画像として表示する |
| pcolor() | 疑似カラーメッシュプロットを描画する(PolyCollection を作成) |
| pcolormesh() | 疑似カラーメッシュプロットを描画する(QuadMesh を作成、パフォーマンス向上) |
| spy() | 疎行列の非ゼロ要素パターンを描画する |
| figimage() | Figure レベル(Axes ではなく)に画像を配置する |
9. 非構造三角形メッシュ
| 関数 | 機能説明 |
|---|---|
| triplot() | 非構造三角形メッシュを描画する |
| tripcolor() | 三角形メッシュの疑似カラープロットを描画する |
| tricontour() | 三角形メッシュ上に等高線を描画する |
| tricontourf() | 三角形メッシュ上に塗りつぶし等高線を描画する |
10. テキストと注釈
| 関数 | 機能説明 |
|---|---|
| text() | Axes の指定座標にテキストを追加する |
| figtext() | Figure の指定位置にテキストを追加する |
| annotate() | 矢印付きの注釈を追加する |
| arrow() | 矢印を追加する |
| legend() | Axes に凡例を追加する |
| figlegend() | Figure レベルで凡例を追加する |
| table() | Axes に表を追加する |
11. ベクトル場
| 関数 | 機能説明 |
|---|---|
| quiver() | ベクトル場(矢印プロット)を描画する |
| quiverkey() | ベクトル場に凡例スケールを追加する |
| barbs() | 風羽プロットを描画する(気象学で風速と風向を示す) |
| streamplot() | 流線プロットを描画する |
12. 軸の設定
軸の範囲、目盛り、ラベル、スケールを設定する関数。
| 関数 | 機能説明 |
|---|---|
| title() | Axes のタイトルを設定する |
| suptitle() | Figure の全体タイトルを設定する |
| xlabel() | x 軸ラベルを設定する |
| ylabel() | y 軸ラベルを設定する |
| xlim() | x 軸の範囲を取得または設定する |
| ylim() | y 軸の範囲を取得または設定する |
| xscale() | x 軸のスケールを設定する(linear/log/symlog/logit...) |
| yscale() | y 軸のスケールを設定する(linear/log/symlog/logit...) |
| xticks() | x 軸の目盛り位置とラベルを取得または設定する |
| yticks() | y 軸の目盛り位置とラベルを取得または設定する |
| tick_params() | 目盛りの外観(方向、色、サイズ、ラベルの回転など)を調整する |
| ticklabel_format() | 目盛りラベルの書式を設定する(科学的記数法など) |
| locator_params() | 目盛りロケータのパラメータを制御する |
| minorticks_on() | 補助目盛りを表示する |
| minorticks_off() | 補助目盛りを非表示にする |
| rgrids() | 極座標プロットの動径グリッド線を取得または設定する |
| thetagrids() | 極座標プロットの角度グリッド線を取得または設定する |
| grid() | グリッド線をオンまたはオフにする |
| axis() | 特定の軸属性を取得または設定するための便利な関数 |
| box() | Axes の枠線をオンまたはオフにする |
| autoscale() | データに合わせて軸を自動スケーリングする |
13. レイアウト
サブプロットの配置と間隔を制御する関数。
| 関数 | 機能説明 |
|---|---|
| subplots_adjust() | サブプロットの間隔を手動で調整する(left/right/top/bottom/wspace/hspace) |
| tight_layout() | サブプロットパラメータを自動調整してコンパクトに配置する |
| margins() | 軸のデータ余白を設定または取得する |
| subplot_tool() | 対話的なサブプロット調整ツールウィンドウを起動する |
14. カラーマッピング
colormap とカラーバーに関連する関数。
| 関数 | 機能説明 |
|---|---|
| colorbar() | カラーバーを追加する |
| clim() | カラーマッピングのデータ範囲を設定する |
| get_cmap() | 指定された名前の colormap オブジェクトを取得する |
| set_cmap() | デフォルトの colormap を設定する |
| gci() | 現在のカラーマッピング可能な画像オブジェクトを取得する |
| sci() | 現在のカラーマッピング可能な画像オブジェクトを設定する |
| imread() | ファイルから画像を配列に読み込む |
| imsave() | 配列を画像ファイルとして保存する |
| colormaps | colormap レジストリオブジェクト |
| color_sequences | 色系列レジストリオブジェクト |
15. 設定
Matplotlib のグローバル設定パラメータを管理する関数。
| 関数 | 機能説明 |
|---|---|
| rc() | rc パラメータを設定する(一括設定可能) |
| rc_context() | rc パラメータを一時的に設定するコンテキストマネージャ |
| rcdefaults() | すべての rc パラメータをデフォルト値に戻す |
16. 出力と対話
グラフの表示、保存、対話モードを制御する関数。
| 関数 | 機能説明 |
|---|---|
| show() | 開いているすべての Figure を表示する |
| savefig() | 現在の Figure をファイルに保存する |
| draw() | 現在の Figure を強制的に再レンダリングする |
| draw_if_interactive() | 対話モードの場合は Figure をレンダリングする |
| pause() | 指定秒数だけ一時停止する(その間イベントを処理する) |
| ion() | 対話モードをオンにする |
| ioff() | 対話モードをオフにする |
| isinteractive() | 現在対話モードかどうかを返す |
| install_repl_displayhook() | REPL 表示フックをインストールする(Figure を自動表示させる) |
| uninstall_repl_displayhook() | REPL 表示フックをアンインストールする |
| switch_backend() | バックエンドを切り替える |
17. その他のユーティリティ関数
| 関数 | 機能説明 |
|---|---|
| connect() | イベントコールバック関数をバインドする |
| disconnect() | イベントコールバック関数をアンバインドする |
| ginput() | マウスクリックで座標点を取得する |
| waitforbuttonpress() | マウスまたはキーボードの入力を待ち、イベントタイプを返す |
| findobj() | 指定した条件に一致する Artist オブジェクトを検索する |
| get() | Artist オブジェクトの属性値を取得 |
| getp() | Artist オブジェクトの属性を取得(get のエイリアス) |
| setp() | Artist オブジェクトの属性を設定 |
| get_current_fig_manager() | 現在の Figure のウィンドウマネージャを取得 |
| new_figure_manager() | 指定された Figure に対して新しい Figure マネージャを作成 |
| set_loglevel() | Matplotlib のログレベルを設定 |
| xkcd() | xkcd(手書き漫画)スタイルに切り替え |
Axes オブジェクト - 全メソッドリスト
Axes(Axes オブジェクト)は Figure 内のサブプロットを表し、データ、目盛り、ラベル、タイトルなどを含みます。以下に公式の分類に従ってすべてのメソッドを完全に列挙します。
1. 基本的なプロットメソッド
| メソッド | 機能の説明 |
|---|---|
| Axes.plot() | 折れ線グラフ |
| Axes.scatter() | 散布図 |
| Axes.bar() | 垂直棒グラフ |
| Axes.barh() | 水平棒グラフ |
| Axes.bar_label() | 棒に数値ラベルを追加 |
| Axes.grouped_bar() | グループ化棒グラフ |
| Axes.pie() | 円グラフ |
| Axes.pie_label() | 円グラフのラベル |
| Axes.stem() | 幹葉図 |
| Axes.eventplot() | イベントプロット |
| Axes.step() | 階段グラフ |
| Axes.fill() | 多角形の塗りつぶし |
| Axes.fill_between() | 水平方向の塗りつぶし領域 |
| Axes.fill_betweenx() | 垂直方向の塗りつぶし領域 |
| Axes.stackplot() | 積み上げ面グラフ |
| Axes.broken_barh() | 水平断棒グラフ |
| Axes.vlines() | 垂直基準線 |
| Axes.hlines() | 水平基準線 |
| Axes.errorbar() | 誤差棒付き折れ線グラフ |
| Axes.loglog() | 両対数座標 |
| Axes.semilogx() | x軸対数座標 |
| Axes.semilogy() | y軸対数座標 |
2. スパンメソッド
| メソッド | 機能の説明 |
|---|---|
| Axes.axhline() | 水平基準線 |
| Axes.axvline() | 垂直基準線 |
| Axes.axhspan() | 水平方向の色付き帯 |
| Axes.axvspan() | 垂直方向の色付き帯 |
| Axes.axline() | 2点を通る無限長の直線 |
3. スペクトル分析メソッド
| メソッド | 機能の説明 |
|---|---|
| Axes.acorr() | 自己相関プロット |
| Axes.xcorr() | 相互相関プロット |
| Axes.angle_spectrum() | 角度スペクトル |
| Axes.magnitude_spectrum() | 振幅スペクトル |
| Axes.phase_spectrum() | 位相スペクトル |
| Axes.psd() | パワースペクトル密度 |
| Axes.csd() | クロススペクトル密度 |
| Axes.cohere() | コヒーレンス |
| Axes.specgram() | スペクトログラム(時間周波数図) |
4. 統計メソッド
| メソッド | 機能の説明 |
|---|---|
| Axes.boxplot() | 箱ひげ図 |
| Axes.bxp() | 事前に計算された統計データから箱ひげ図を描画 |
| Axes.violinplot() | バイオリンプロット |
| Axes.violin() | 事前に計算された統計データからバイオリンプロットを描画 |
| Axes.ecdf() | 経験累積分布関数 |
5. ビニングとヒストグラムのメソッド
| メソッド | 機能の説明 |
|---|---|
| Axes.hist() | ヒストグラム |
| Axes.hist2d() | 2次元ヒストグラム |
| Axes.hexbin() | 六角形ビニングプロット |
| Axes.stairs() | 階段ヒストグラム |
6. 等高線メソッド
| メソッド | 機能の説明 |
|---|---|
| Axes.contour() | 等高線 |
| Axes.contourf() | 塗りつぶし等高線 |
| Axes.clabel() | 等高線ラベル |
7. 2次元配列メソッド
| メソッド | 機能の説明 |
|---|---|
| Axes.imshow() | 画像/ヒートマップの表示 |
| Axes.matshow() | 行列画像 |
| Axes.pcolor() | 疑似カラーメッシュ(PolyCollection) |
| Axes.pcolorfast() | 高速疑似カラー(imshow を使用して描画) |
| Axes.pcolormesh() | 疑似カラーメッシュ(QuadMesh、推奨) |
| Axes.spy() | スパース行列パターン |
8. 非構造三角形メッシュメソッド
| メソッド | 機能の説明 |
|---|---|
| Axes.triplot() | 三角形メッシュの線 |
| Axes.tripcolor() | 三角形メッシュの疑似カラー |
| Axes.tricontour() | 三角形メッシュの等高線 |
| Axes.tricontourf() | 三角形メッシュの塗りつぶし等高線 |
9. テキストと注釈メソッド
| メソッド | 機能の説明 |
|---|---|
| Axes.text() | テキストを追加 |
| Axes.annotate() | 矢印付きの注釈を追加 |
| Axes.table() | テーブルを追加 |
| Axes.arrow() | 矢印を追加 |
| Axes.inset_axes() | Axes 内に埋め込みサブプロットを作成 |
| Axes.indicate_inset() | 親 Axes 上に埋め込みサブプロット領域をマーク |
| Axes.indicate_inset_zoom() | 埋め込みサブプロットの拡大領域をマーク |
| Axes.secondary_xaxis() | 補助 x 軸を追加(別の位置に同じデータを表示) |
| Axes.secondary_yaxis() | 補助 y 軸を追加 |
10. ベクトル場メソッド
| メソッド | 機能の説明 |
|---|---|
| Axes.quiver() | ベクトル場(矢印プロット) |
| Axes.quiverkey() | ベクトル場の凡例スケール |
| Axes.barbs() | 風羽プロット |
| Axes.streamplot() | 流線プロット |
11. クリアメソッド
| メソッド | 機能の説明 |
|---|---|
| Axes.cla() | Axes 内のすべてのコンテンツをクリア |
| Axes.clear() | Axes をクリア(cla() と同じ) |
12. 外観メソッド
| メソッド | 機能の説明 |
|---|---|
| Axes.axis() | 軸の可視性または範囲を設定 |
| Axes.set_axis_off() | 座標軸を非表示 |
| Axes.set_axis_on() | 座標軸を表示 |
| Axes.set_frame_on() | Axes の境界線を表示 |
| Axes.get_frame_on() | 境界線が表示されているかどうかを取得 |
| Axes.set_axisbelow() | グリッド/目盛りをデータの下に表示するかどうかを設定 |
| Axes.get_axisbelow() | グリッド/目盛りのレイヤーを取得 |
| Axes.grid() | グリッド線を設定 |
| Axes.get_facecolor() | Axes の背景色を取得 |
| Axes.set_facecolor() | Axes の背景色を設定 |
13. 属性サイクル
| メソッド | 機能の説明 |
|---|---|
| Axes.set_prop_cycle() | 線の色/線種などのプロパティのサイクルを設定 |
14. 軸と目盛りの制御
座標軸へのアクセス:
| メソッド | 機能の説明 |
|---|---|
| Axes.xaxis / Axes.yaxis | x/y 軸の Axis オブジェクトを取得(属性) |
| Axes.get_xaxis() / get_yaxis() | x/y 軸の Axis オブジェクトを取得 |
座標軸の範囲と方向:
| メソッド | 機能の説明 |
|---|---|
| Axes.set_xlim() / get_xlim() | x 軸の範囲を設定/取得 |
| Axes.set_ylim() / get_ylim() | y 軸の範囲を設定/取得 |
| Axes.set_xbound() / get_xbound() | x 軸の下限と上限を設定/取得 |
| Axes.set_ybound() / get_ybound() | y 軸の下限と上限を設定/取得 |
| Axes.invert_xaxis() | x 軸の方向を反転 |
| Axes.invert_yaxis() | y 軸の方向を反転 |
| Axes.xaxis_inverted() / yaxis_inverted() | 軸が反転しているかどうかを確認 |
| Axes.set_xinverted() / get_xinverted() | x 軸が反転しているかどうかを設定/取得 |
| Axes.set_yinverted() / get_yinverted() | y 軸が反転しているかどうかを設定/取得 |
| Axes.update_datalim() | 新しいデータポイントでデータ範囲を拡張 |
座標軸ラベルと凡例:
| メソッド | 機能の説明 |
|---|---|
| Axes.set_xlabel() / get_xlabel() | x 軸ラベルを設定/取得 |
| Axes.set_ylabel() / get_ylabel() | y 軸ラベルを設定/取得 |
| Axes.label_outer() | 最外側のサブプロットの目盛りラベルのみを表示 |
| Axes.set_title() / get_title() | Axes のタイトルを設定/取得 |
| Axes.legend() | 凡例を追加 |
| Axes.get_legend() | 現在の凡例オブジェクトを取得 |
| Axes.get_legend_handles_labels() | 凡例のハンドルとラベルを取得 |
座標軸のスケール:
| メソッド | 機能の説明 |
|---|---|
| Axes.set_xscale() / get_xscale() | x 軸のスケールを設定/取得 |
| Axes.set_yscale() / get_yscale() | y 軸のスケールを設定/取得 |
自動スケーリングとマージン:
| メソッド | 機能の説明 |
|---|---|
| Axes.autoscale() | データに合わせてビューを自動スケーリング |
| Axes.autoscale_view() | ビューのみを自動スケーリング(マージンは変更しない) |
| Axes.margins() | データマージンを設定または取得 |
| Axes.relim() | 現在の Artist に基づいてデータ範囲を再計算 |
| Axes.use_sticky_edges() | スティッキーエッジを使用 |
| Axes.set_xmargin() / get_xmargin() | x 軸のマージンを設定/取得 |
| Axes.set_ymargin() / get_ymargin() | y 軸のマージンを設定/取得 |
| Axes.set_autoscale_on() / get_autoscale_on() | 自動スケーリングかどうかを設定/取得 |
| Axes.set_autoscalex_on() / get_autoscalex_on() | x 軸が自動スケーリングかどうかを設定/取得 |
| Axes.set_autoscaley_on() / get_autoscaley_on() | y 軸が自動スケーリングかどうかを設定/取得 |
アスペクト比:
| メソッド | 機能の説明 |
|---|---|
| Axes.set_aspect() / get_aspect() | 座標軸のアスペクト比を設定/取得('equal'/'auto'/数値) |
| Axes.set_box_aspect() / get_box_aspect() | Axes ボックスのアスペクト比を設定/取得 |
| Axes.apply_aspect() | 現在のアスペクト比設定を適用 |
| Axes.set_adjustable() / get_adjustable() | 調整可能な方向を設定/取得('box'/'datalim') |
目盛りと目盛りラベル:
| メソッド | 機能の説明 |
|---|---|
| Axes.set_xticks() / get_xticks() | x 軸の目盛り位置を設定/取得 |
| Axes.set_yticks() / get_yticks() | y 軸の目盛り位置を設定/取得 |
| Axes.set_xticklabels() / get_xticklabels() | x 軸の目盛りラベルを設定/取得 |
| Axes.set_yticklabels() / get_yticklabels() | y 軸の目盛りラベルを設定/取得 |
| Axes.get_xmajorticklabels() | x 軸の主目盛りラベルを取得 |
| Axes.get_xminorticklabels() | x 軸の副目盛りラベルを取得 |
| Axes.get_ymajorticklabels() | y 軸の主目盛りラベルを取得 |
| Axes.get_yminorticklabels() | y 軸の副目盛りラベルを取得 |
| Axes.get_xgridlines() | x 軸のグリッド線を取得 |
| Axes.get_ygridlines() | y 軸のグリッド線を取得 |
| Axes.get_xticklines() | x 軸の目盛り線を取得 |
| Axes.get_yticklines() | y 軸の目盛り線を取得 |
| Axes.xaxis_date() | x 軸の目盛りを日付形式に設定 |
| Axes.yaxis_date() | y 軸の目盛りを日付形式に設定 |
| Axes.minorticks_on() | 副目盛りを表示 |
| Axes.minorticks_off() | 副目盛りを非表示 |
| Axes.ticklabel_format() | 目盛りラベルの書式設定 |
| Axes.tick_params() | 目盛りの外観パラメータを調整 |
| Axes.locator_params() | 目盛りロケーターのパラメータを制御 |
15. 単位
| メソッド | 機能説明 |
|---|---|
| Axes.convert_xunits() | 単位コンバーターを使用してx値を変換 |
| Axes.convert_yunits() | 単位コンバーターを使用してy値を変換 |
| Axes.have_units() | 登録された単位コンバーターがあるか確認 |
16. Artist の追加
| メソッド | 機能説明 |
|---|---|
| Axes.add_artist() | 任意のArtistオブジェクトを追加 |
| Axes.add_child_axes() | 子Axesを追加 |
| Axes.add_collection() | Collectionオブジェクトを追加 |
| Axes.add_container() | Containerオブジェクトを追加 |
| Axes.add_image() | AxesImageオブジェクトを追加 |
| Axes.add_line() | Line2Dオブジェクトを追加 |
| Axes.add_patch() | Patchオブジェクトを追加 |
| Axes.add_table() | Tableオブジェクトを追加 |
17. 双軸と共有軸
| メソッド | 機能説明 |
|---|---|
| Axes.twinx() | x軸を共有する双y軸を作成 |
| Axes.twiny() | y軸を共有する双x軸を作成 |
| Axes.sharex() | 他のAxesとx軸を共有 |
| Axes.sharey() | 他のAxesとy軸を共有 |
| Axes.get_shared_x_axes() | 共有x軸のGrouperオブジェクトを取得 |
| Axes.get_shared_y_axes() | 共有y軸のGrouperオブジェクトを取得 |
18. Axes の位置
| メソッド | 機能説明 |
|---|---|
| Axes.get_position() / set_position() | Figure内のAxesの位置とサイズを取得/設定 |
| Axes.get_anchor() / set_anchor() | Axesのアンカー(固定位置)を取得/設定 |
| Axes.get_axes_locator() / set_axes_locator() | Axesロケーターコールバック関数を取得/設定 |
| Axes.get_subplotspec() / set_subplotspec() | SubplotSpecオブジェクトを取得/設定 |
| Axes.reset_position() | Axesの位置を元の値にリセット |
19. 非同期/イベント
| メソッド | 機能説明 |
|---|---|
| Axes.stale | Artistを再描画が必要かどうかマーク(プロパティ) |
| Axes.pchanged() | 属性変更イベントをマーク |
| Axes.add_callback() | 属性変更コールバックを追加 |
| Axes.remove_callback() | 属性変更コールバックを削除 |
20. インタラクション
| メソッド | 機能説明 |
|---|---|
| Axes.can_pan() / can_zoom() | パン/ズームが可能かどうかを返す |
| Axes.set_navigate() / get_navigate() | ナビゲーションツールバーが有効かどうかを設定/取得 |
| Axes.set_navigate_mode() / get_navigate_mode() | ナビゲーションモードを設定/取得 |
| Axes.start_pan() / drag_pan() / end_pan() | パン操作の開始/ドラッグ/終了 |
| Axes.format_coord() | ツールバーに表示される座標文字列をフォーマット |
| Axes.format_cursor_data() | カーソル位置のデータ値をフォーマット |
| Axes.format_xdata() / format_ydata() | x/yデータ値をフォーマット |
| Axes.mouseover() | マウスがAxes上にあるかどうかを判定 |
| Axes.in_axes() | 点がAxes内にあるかどうかを判定 |
| Axes.contains() / contains_point() | Artistが点を含むかどうかを判定 |
| Axes.get_cursor_data() | カーソル位置のデータを取得 |
| Axes.get_forward_navigation_events() / set_forward_navigation_events() | ナビゲーションイベントの転送を取得/設定 |
21. 子要素のクエリ
| メソッド | 機能説明 |
|---|---|
| Axes.get_children() | すべての子Artistを取得 |
| Axes.get_images() | すべての画像オブジェクトを取得 |
| Axes.get_lines() | すべての折れ線オブジェクトを取得 |
| Axes.findobj() | 条件に一致する子Artistを検索 |
22. 描画
| メソッド | 機能説明 |
|---|---|
| Axes.draw() | Axesをレンダリング |
| Axes.draw_artist() | 単一のArtistを描画(低レベルメソッド) |
| Axes.redraw_in_frame() | フレーム内で再描画 |
| Axes.get_window_extent() | 表示ウィンドウ内のAxesの境界を取得 |
| Axes.get_tightbbox() | Axesのコンパクトな境界ボックスを取得 |
| Axes.get_rasterization_zorder() / set_rasterization_zorder() | ラスタライズのzorderしきい値を取得/設定 |
23. 投影(サブクラスでオーバーライドが必要)
| メソッド | 機能説明 |
|---|---|
| Axes.name | 投影名(例: 'rectilinear'、'polar') |
| Axes.get_xaxis_transform() / get_yaxis_transform() | x/y軸の変換を取得 |
| Axes.get_data_ratio() | データのアスペクト比を取得 |
| Axes.get_xaxis_text1_transform() | x軸下部ラベルの変換 |
| Axes.get_xaxis_text2_transform() | x軸上部ラベルの変換 |
| Axes.get_yaxis_text1_transform() | y軸左側ラベルの変換 |
| Axes.get_yaxis_text2_transform() | y軸右側ラベルの変換 |
24. その他のメソッド
| メソッド | 機能説明 |
|---|---|
| Axes.set() | プロパティを一括設定 |
| Axes.zorder | zorderを取得/設定(プロパティ) |
| Axes.get_figure() | 所属するFigureオブジェクトを取得 |
| Axes.figure | 所属するFigureオブジェクト(プロパティ) |
| Axes.remove() | Figureから自身を削除 |
| Axes.has_data() | データがあるか確認 |
| Axes.get_default_bbox_extra_artists() | 境界ボックス計算で追加で含める必要があるArtistを取得 |
| Axes.get_transformed_clip_path_and_affine() | 変換後のクリップパスを取得 |
| Axes.viewLim | ビュー範囲(プロパティ) |
| Axes.dataLim | データ範囲(プロパティ) |
| Axes.spines | 枠線ディクショナリ(プロパティ) |
Figure オブジェクト - 全メソッドリスト
Figureはチャート全体のトップレベルコンテナであり、すべてのAxes、Artist、レイアウトを管理します。
1. Axes と SubFigure の追加
| メソッド | 機能説明 |
|---|---|
| Figure.subplots() | 推奨Axesのサブプロットグリッドを作成 |
| Figure.add_subplot() | 行と列の位置で単一のサブプロットを追加 |
| Figure.add_axes() | 指定した位置とサイズでAxesを追加 |
| Figure.subplot_mosaic() | ラベルレイアウトを使用して複雑なサブプロット配置を作成 |
| Figure.add_gridspec() | GridSpecレイアウトオブジェクトを追加 |
| Figure.subfigures() | ネストされた子Figureを作成 |
| Figure.add_subfigure() | 単一のSubFigureを追加 |
| Figure.axes | Axesリスト(プロパティ) |
| Figure.get_axes() | すべてのAxesを取得 |
| Figure.delaxes() | 指定したAxesを削除 |
2. 保存
| メソッド | 機能説明 |
|---|---|
| Figure.savefig() | Figureをファイルに保存 |
3. Figure レベルの注釈
| メソッド | 機能説明 |
|---|---|
| Figure.suptitle() / get_suptitle() | Figureの全体タイトルを設定/取得 |
| Figure.supxlabel() / get_supxlabel() | Figureレベルのxラベルを設定/取得 |
| Figure.supylabel() / get_supylabel() | Figureレベルのyラベルを設定/取得 |
| Figure.colorbar() | カラーバーを追加 |
| Figure.legend() | グローバル凡例を追加 |
| Figure.text() | Figureレベルでテキストを追加 |
| Figure.align_labels() | すべてのサブプロットの軸ラベルを整列 |
| Figure.align_xlabels() | すべてのサブプロットのx軸ラベルを整列 |
| Figure.align_ylabels() | すべてのサブプロットのy軸ラベルを整列 |
| Figure.align_titles() | すべてのサブプロットのタイトルを整列 |
| Figure.autofmt_xdate() | 日付目盛りラベルを自動回転 |
4. Figure のジオメトリ
| メソッド | 機能説明 |
|---|---|
| Figure.set_size_inches() / get_size_inches() | Figureのサイズ(インチ)を設定/取得 |
| Figure.set_figheight() / get_figheight() | Figureの高さを設定/取得 |
| Figure.set_figwidth() / get_figwidth() | Figureの幅を設定/取得 |
| Figure.dpi | DPI解像度(プロパティ) |
| Figure.set_dpi() / get_dpi() | DPIを設定/取得 |
5. サブプロットレイアウト
| メソッド | 機能説明 |
|---|---|
| Figure.subplots_adjust() | サブプロット間隔を手動で調整 |
| Figure.set_layout_engine() | レイアウトエンジンを設定('constrained'/'compressed'/'none') |
| Figure.get_layout_engine() | 現在のレイアウトエンジンを取得 |
| Figure.tight_layout() | 自動コンパクトレイアウト(非推奨) |
| Figure.set_tight_layout() / get_tight_layout() | tight_layoutを設定/取得(非推奨) |
| Figure.set_constrained_layout() / get_constrained_layout() | constrained_layoutを設定/取得(非推奨) |
| Figure.set_constrained_layout_pads() / get_constrained_layout_pads() | constrained_layoutの余白を設定/取得(非推奨) |
6. インタラクション
| メソッド | 機能説明 |
|---|---|
| Figure.ginput() | マウスクリックで座標点を取得 |
| Figure.waitforbuttonpress() | マウスまたはキーボードの押下を待機 |
| Figure.pick() | pickイベントをトリガー |
| Figure.add_axobserver() | Axesオブザーバーを追加 |
7. 外観の変更
| メソッド | 機能説明 |
|---|---|
| Figure.set_frameon() / get_frameon() | Figureの背景の表示/非表示を設定/取得 |
| Figure.set_linewidth() / get_linewidth() | Figureの枠線の線幅を設定/取得 |
| Figure.set_facecolor() / get_facecolor() | Figureの背景色を設定/取得 |
| Figure.set_edgecolor() / get_edgecolor() | Figureの枠線の色を設定/取得 |
8. Artist の追加と取得
| メソッド | 機能説明 |
|---|---|
| Figure.add_artist() | 任意のArtistを追加 |
| Figure.figimage() | Figureレベルで画像を配置 |
| Figure.get_children() | すべての子Artistを取得 |
9. 状態管理
| メソッド | 機能説明 |
|---|---|
| Figure.clear() | Figureをクリア |
| Figure.gca() | 現在のAxesを取得 |
| Figure.sca() | 現在のAxesを設定 |
| Figure.show() | Figureを表示 |
| Figure.draw() | Figureをレンダリング |
| Figure.draw_artist() | 単一のArtistを描画 |
| Figure.draw_without_rendering() | レンダリングせずにレイアウトを計算(サイズ情報を取得するため) |
| Figure.set_canvas() | キャンバスを設定 |
| Figure.get_tightbbox() | Figureのコンパクトな境界ボックスを取得 |
| Figure.get_window_extent() | 表示ウィンドウ内での Figure の境界を取得 |
10. ヘルパー関数
| 関数 | 機能説明 |
|---|---|
| figaspect() | 指定されたアスペクト比に基づいて Figure サイズを計算 |
SubFigure オブジェクト - メソッドリスト
SubFigure は親 Figure 内にネストされた論理的な子 Figure であり、Figure と同様のメソッドを持ちます。
Axes の追加
| メソッド | 機能説明 |
|---|---|
| SubFigure.subplots() | サブプロットグリッドを作成 |
| SubFigure.add_subplot() | 単一のサブプロットを追加 |
| SubFigure.add_axes() | 指定された位置に Axes を追加 |
| SubFigure.subplot_mosaic() | ラベル付きレイアウトのサブプロット |
| SubFigure.add_gridspec() | GridSpec を追加 |
| SubFigure.subfigures() | より深くネストされた SubFigure を作成 |
| SubFigure.add_subfigure() | 単一の SubFigure を追加 |
| SubFigure.delaxes() | Axes を削除 |
注釈
| メソッド | 機能説明 |
|---|---|
| SubFigure.suptitle() / get_suptitle() | SubFigure の全体タイトル |
| SubFigure.supxlabel() / get_supxlabel() | SubFigure の x ラベル |
| SubFigure.supylabel() / get_supylabel() | SubFigure の y ラベル |
| SubFigure.colorbar() | カラーバー |
| SubFigure.legend() | 凡例 |
| SubFigure.text() | テキスト |
| SubFigure.align_labels() | ラベルを整列 |
| SubFigure.align_xlabels() / align_ylabels() | x/y ラベルを整列 |
| SubFigure.align_titles() | タイトルを整列 |
Artist と外観
| メソッド | 機能説明 |
|---|---|
| SubFigure.add_artist() | Artist を追加 |
| SubFigure.get_children() | 子 Artist を取得 |
| SubFigure.set_frameon() / get_frameon() | 枠線の設定/取得 |
| SubFigure.set_linewidth() / get_linewidth() | 線幅の設定/取得 |
| SubFigure.set_facecolor() / get_facecolor() | 背景色の設定/取得 |
| SubFigure.set_edgecolor() / get_edgecolor() | 枠線色の設定/取得 |
| SubFigure.set_dpi() / get_dpi() | DPI の設定/取得 |
スタイル設定のクイックリファレンス
組み込みスタイルシート
を使用してplt.style.use('name')スタイルを切り替えます。
| スタイル名 | スタイルの説明 |
|---|---|
| default | デフォルトスタイル。すっきりとした中立的な外観 |
| ggplot | R の ggplot2 スタイルを模倣。灰色の背景に白いグリッド |
| seaborn-v0_8 | seaborn ライブラリに似たモダンなスタイル |
| seaborn-v0_8-bright | seaborn のブライトパレット |
| seaborn-v0_8-colorblind | seaborn の色覚多様性対応パレット |
| seaborn-v0_8-dark | seaborn のダークスタイル |
| seaborn-v0_8-dark-palette | seaborn のディープパレット |
| seaborn-v0_8-darkgrid | seaborn のダークグリッドスタイル |
| seaborn-v0_8-deep | seaborn のダークパレット |
| seaborn-v0_8-muted | seaborn のミュートパレット |
| seaborn-v0_8-notebook | seaborn の notebook スタイル |
| seaborn-v0_8-paper | seaborn の論文スタイル |
| seaborn-v0_8-pastel | seaborn のパステルパレット |
| seaborn-v0_8-poster | seaborn のポスタースタイル |
| seaborn-v0_8-talk | seaborn のトークスタイル |
| seaborn-v0_8-ticks | seaborn の目盛りスタイル |
| seaborn-v0_8-white | seaborn の白背景スタイル |
| seaborn-v0_8-whitegrid | seaborn の白背景 + グリッドスタイル |
| fivethirtyeight | FiveThirtyEight のデータジャーナリズムスタイルを模倣 |
| dark_background | ダーク背景。プレゼンテーションや夜間の使用に適している |
| bmh | Bayesian Methods for Hackers スタイル |
| grayscale | グレースケールスタイル。白黒印刷に適している |
| classic | Matplotlib v1.x のクラシックスタイル |
| fast | 簡素化されたスタイルで、レンダリングが高速 |
| Solarize_Light2 | Solarized のライトテーマ |
| tableau-colorblind10 | Tableau の色覚多様性対応パレット |
一般的な rcParams 設定
| パラメータ | 説明 | 設定例 |
|---|---|---|
| figure.figsize | デフォルトの図のサイズ(インチ) | [8, 6] |
| figure.dpi | デフォルトの解像度 | 100 |
| figure.facecolor | Figure の背景色 | 'white' |
| figure.edgecolor | Figure の枠線色 | 'white' |
| font.size | 全体のフォントサイズ | 12 |
| font.family | フォントファミリー | 'sans-serif' |
| font.sans-serif | サンセリフフォントのリスト | ['DejaVu Sans', ...] |
| axes.titlesize | タイトルのフォントサイズ | 'large' |
| axes.labelsize | 軸ラベルのフォントサイズ | 'medium' |
| axes.grid | デフォルトでグリッドを表示するかどうか | False |
| axes.facecolor | Axes の背景色 | 'white' |
| axes.spines.top | 上部の枠線を表示するかどうか | True |
| axes.spines.right | 右側の枠線を表示するかどうか | True |
| lines.linewidth | デフォルトの線幅 | 1.5 |
| lines.markersize | デフォルトのマーカーサイズ | 6 |
| lines.linestyle | デフォルトの線種 | '-' |
| legend.loc | 凡例のデフォルト位置 | 'best' |
| legend.fontsize | 凡例のフォントサイズ | 'medium' |
| xtick.labelsize | x 軸の目盛りラベルサイズ | 'medium' |
| ytick.labelsize | y 軸の目盛りラベルサイズ | 'medium' |
| savefig.dpi | 画像保存時のデフォルト解像度 | 'figure' |
| savefig.bbox | 保存時の境界モード | None |
| image.cmap | デフォルトの colormap | 'viridis' |
| image.interpolation | 画像の補間方法 | 'antialiased' |
colormap(カラーマップ)クイックリファレンス
| 分類 | colormap 名 | 適用シーン |
|---|---|---|
| 知覚的均一(Sequential) | viridis, plasma, inferno, magma, cividis | 連続データ、色覚多様性に配慮、第一推奨 |
| 順次的(単色グラデーション) | Greys, Purples, Blues, Greens, Oranges, Reds, YlOrBr, YlOrRd, OrRd, PuRd, RdPu, BuPu, GnBu, PuBu, YlGnBu, PuBuGn, BuGn, YlGn | 低から高への連続データ、単色調 |
| 発散的(Diverging) | PiYG, PRGn, BrBG, PuOr, RdGy, RdBu, RdYlBu, RdYlGn, Spectral, coolwarm, bwr, seismic | 中心の基準点を持つ双方向データ |
| 循環(Cyclic) | twilight, twilight_shifted, hsv | 周期的なデータ(角度、時間など) |
| 定性的(Qualitative) | Pastel1, Pastel2, Paired, Accent, Dark2, Set1, Set2, Set3, tab10, tab20, tab20b, tab20c | 離散的なカテゴリデータ |
| その他 | flag, prism, ocean, gist_earth, terrain, gist_stern, gnuplot, gnuplot2, CMRmap, cubehelix, brg, gist_rainbow, rainbow, jet, turbo, nipy_spectral, gist_ncar | 特殊な用途や視覚効果用 |
'viridis'Matplotlib 2.0 以降のデフォルトの colormap であり、優れた知覚的均一性と色覚多様性への配慮を備え、ほとんどのシーンで第一候補です。次の使用は避けてください。'jet'と'rainbow'、これらには知覚的な歪みの問題があります。
一般的な例
例1:基本的な折れ線グラフと散布図
明示的な Axes インターフェースを使用して、複数の曲線と注釈を含むグラフを作成します。
実例
import numpy as np
# データを生成:0 から 10 までの等間隔な 100 点
x = np.linspace(0, 10, 100)
y1 = np.sin(x) # 正弦関数
y2 = np.cos(x) # 余弦関数
# Figure と Axes を作成(明示的インターフェース、推奨)
fig, ax = plt.subplots(figsize=(8, 4), layout='constrained')
# 2 本の折れ線を描画し、色・線種・ラベルを設定
ax.plot(x, y1, label='sin(x)', color='blue', linewidth=2)
ax.plot(x, y2, label='cos(x)', color='red', linestyle='--', linewidth=2)
# ピーク位置にハイライト散布点を追加
peak_idx_sin = np.argmax(y1)
peak_idx_cos = np.argmax(y2)
ax.scatter(x[peak_idx_sin], y1[peak_idx_sin],
color='blue', s=100, zorder=5)
ax.scatter(x[peak_idx_cos], y2[peak_idx_cos],
color='red', s=100, zorder=5)
# 装飾:タイトル、軸ラベル、凡例、グリッド
ax.set_title('Sine and Cosine Functions', fontsize=14)
ax.set_xlabel('x (radians)')
ax.set_ylabel('Amplitude')
ax.legend(loc='upper right')
ax.grid(True, alpha=0.3)
plt.show()
print("サンプル: plot displayed successfully")
例2:複数サブプロットレイアウト(2x2)
1 つの Figure 内で異なるタイプのサブプロットを作成する方法を示します。
実例
import numpy as np
x = np.linspace(0, 2 * np.pi, 100)
# 2x2 のサブプロットを作成(オブジェクト指向インターフェース)
fig, axes = plt.subplots(2, 2, figsize=(10, 8), layout='constrained')
fig.suptitle('Multi-panel サンプル Demo', fontsize=16)
# サブプロット (0,0):折れ線グラフ
axes[0, 0].plot(x, np.sin(x), color='tab:blue', linewidth=2)
axes[0, 0].set_title('Line Plot')
axes[0, 0].set_ylabel('sin(x)')
# サブプロット (0,1):散布図
np.random.seed(42)
colors = np.random.rand(50)
sizes = np.random.rand(50) * 200
axes[0, 1].scatter(np.random.rand(50), np.random.rand(50),
c=colors, s=sizes, alpha=0.6, cmap='viridis')
axes[0, 1].set_title('Scatter Plot')
# サブプロット (1,0):棒グラフ(数値ラベル付き)
categories = ['A', 'B', 'C', 'D', 'E']
values = [23, 45, 56, 78, 32]
bars = axes[1, 0].bar(categories, values,
color='tab:green', edgecolor='white')
axes[1, 0].bar_label(bars) # 棒の上に数値を表示
axes[1, 0].set_title('Bar Chart')
# サブプロット (1,1):ヒストグラム
data = np.random.randn(1000)
axes[1, 1].hist(data, bins=30, color='tab:orange',
edgecolor='white', alpha=0.8)
axes[1, 1].axvline(x=0, color='red', linestyle='--', linewidth=2)
axes[1, 1].set_title('Histogram')
plt.show()
例3:ヒートマップと等高線の比較
同じ Figure 内で imshow と contourf の 2 つの方法で 2 次元データを可視化します。
実例
import numpy as np
# 2 次元グリッドデータを作成
x = np.linspace(-3, 3, 100)
y = np.linspace(-3, 3, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(X) * np.cos(Y) # 2 次元関数の値
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5),
layout='constrained')
# 左の図:ヒートマップ(imshow)
im = ax1.imshow(Z, extent=[-3, 3, -3, 3], origin='lower',
cmap='viridis', aspect='auto')
ax1.set_title('Heatmap (imshow)', fontsize=14)
ax1.set_xlabel('X')
ax1.set_ylabel('Y')
fig.colorbar(im, ax=ax1, label='Amplitude', shrink=0.8)
# 右の図:塗りつぶし等高線(contourf)
contour = ax2.contourf(X, Y, Z, levels=15, cmap='RdYlBu')
# 等高線の境界を重ねる
ax2.contour(X, Y, Z, levels=15, colors='black', linewidths=0.5)
ax2.set_title('Filled Contour (contourf)', fontsize=14)
ax2.set_xlabel('X')
ax2.set_ylabel('Y')
fig.colorbar(contour, ax=ax2, label='Amplitude', shrink=0.8)
plt.show()
例4:スタイルの切り替えと画像の保存
スタイルシートと rcParams を使用して外観をカスタマイズし、高品質な画像を保存します。
実例
import numpy as np
# ggplot スタイルを使用し、一部のパラメータを微調整
plt.style.use('ggplot')
plt.rcParams['figure.figsize'] = [8, 6]
plt.rcParams['font.size'] = 12
x = np.linspace(0, 10, 50)
y1 = np.exp(-x/3) * np.sin(2 * x) # 減衰正弦波
y2 = np.exp(-x/3) * np.cos(2 * x) # 減衰余弦波
fig, ax = plt.subplots()
ax.plot(x, y1, 'o-', label='Damped sin', markersize=6)
ax.plot(x, y2, 's--', label='Damped cos', markersize=6)
# 最初のピークに注釈を付ける
peak_idx = np.argmax(y1)
ax.annotate(f'Peak: {y1[peak_idx]:.2f}',
xy=(x[peak_idx], y1[peak_idx]),
xytext=(x[peak_idx] + 1.5, y1[peak_idx] + 0.15),
arrowprops=dict(arrowstyle='->', color='gray'),
fontsize=10)
ax.set_title('Damped Oscillation', fontsize=16)
ax.set_xlabel('Time (s)')
ax.set_ylabel('Amplitude')
ax.legend()
ax.grid(True)
# 300 DPI の高品質 PNG として保存
fig.savefig('サンプル_damped_oscillation.png',
dpi=300, bbox_inches='tight')
print("サンプル: figure saved successfully")
plt.show()
例5:mosaic 複雑レイアウト
subplot_mosaic を使用して不均一なサブプロット配置を作成します。
実例
import numpy as np
# mosaic 文字列でレイアウトを定義:
# 'A' は上部の 1 行全体にまたがり、'B' と 'C' は左下と左中央、'D' は右下を縦方向に占有
layout = """
A A A
B C D
"""
fig, axes = plt.subplot_mosaic(layout, figsize=(10, 6),
layout='constrained')
fig.suptitle('Complex Mosaic Layout (サンプル)', fontsize=16)
# パネル A:折れ線グラフ(上部にまたがる)
x = np.linspace(0, 10, 100)
axes['A'].plot(x, np.sin(x), label='sin(x)')
axes['A'].plot(x, np.cos(x), label='cos(x)')
axes['A'].set_title('Panel A: Line Plot')
axes['A'].legend()
# パネル B:円グラフ
sizes = [30, 25, 20, 15, 10]
labels = ['Python', 'Java', 'C++', 'Rust', 'Go']
axes['B'].pie(sizes, labels=labels, autopct='%1.1f%%',
startangle=90)
axes['B'].set_title('Panel B: Pie Chart')
# パネル C:棒グラフ
axes['C'].bar(['X', 'Y', 'Z'], [10, 25, 15],
color=['#ff6b6b', '#4ecdc4', '#45b7d1'])
axes['C'].set_title('Panel C: Bar Chart')
# パネル D:ヒートマップ
matrix = np.random.rand(5, 5)
im = axes['D'].imshow(matrix, cmap='Blues', aspect='auto')
axes['D'].set_title('Panel D: Heatmap')
fig.colorbar(im, ax=axes['D'])
plt.show()
例6:双 y 軸と埋め込みサブプロット
secondary_axis、twinx、inset_axes の使い方を示します。
実例
import numpy as np
fig, ax = plt.subplots(figsize=(8, 5), layout='constrained')
x = np.linspace(0, 10, 100)
# メインのグラフ:次元の異なる 2 本の曲線を描画
ax.plot(x, np.sin(x), 'b-', label='sin(x) [amplitude]')
ax.set_xlabel('x (radians)')
ax.set_ylabel('sin(x)', color='blue')
ax.tick_params(axis='y', labelcolor='blue')
# 二重 y 軸を作成(x 軸を共有)
ax2 = ax.twinx()
ax2.plot(x, np.exp(x/5), 'r--', label='exp(x/5) [growth]')
ax2.set_ylabel('exp(x/5)', color='red')
ax2.tick_params(axis='y', labelcolor='red')
# ax に埋め込みサブプロットを追加(局所領域を拡大)
axins = ax.inset_axes([0.15, 0.5, 0.3, 0.35])
axins.plot(x, np.sin(x), 'b-')
axins.set_xlim(3, 5)
axins.set_ylim(-1.2, 1.2)
axins.set_title('Zoomed Region')
axins.grid(True, alpha=0.3)
# メインのグラフに埋め込み領域をマーク
ax.indicate_inset_zoom(axins, edgecolor='gray')
ax.set_title('Dual Y-Axes with Inset Zoom', fontsize=14)
plt.show()
よくある質問
グラフが表示されない
を呼び出したか確認してくださいplt.show()。
非インタラクティブバックエンド(Agg など)では明示的に呼び出す必要がありますshow()。
Jupyter Notebook では、を使用します%matplotlib inlineマジックコマンドにより、グラフがインライン表示されるようにします。
目盛りが多すぎる、または順序が乱れる
よくある原因は、文字列リストを(数値や日時ではなく)データとして渡していることです。
Matplotlib は文字列リストをカテゴリ変数として扱い、一意の値ごとに1つの目盛りを作成し、出現順に並べます。
解決方法:文字列を数値に変換します。例:np.asarray(data, dtype='float') 或 np.asarray(data, dtype='datetime64[s]')。
中国語が四角い枠で表示される
Matplotlib のデフォルトフォント(DejaVu Sans)には中国語のグリフが含まれていないため、中国語をサポートするフォントを指定する必要があります。
設定plt.rcParams['font.sans-serif'] = ['SimHei', 'Arial Unicode MS', ...]また、そのシステムに当該フォントがインストールされていることを確認してください。
ラベルが重なる、または切り詰められる
Figure を作成する際に使用することを推奨します。layout='constrained' 或 layout='compressed'パラメータを使用すると、ラベル・タイトル・凡例の重なりを自動的に処理できます。
また、使用することもできます。fig.tight_layout() 或 fig.subplots_adjust()手動で調整します。
pcolor と pcolormesh の違い
pcolor()PolyCollection を作成し、レンダリングは遅いですが、より正確です。
pcolormesh()QuadMesh を作成し、レンダリング速度が速いため、ほとんどのシナリオで推奨される選択肢です。
非常に大きなグリッドの場合、pcolorfast()imshow 方式で描画すると、速度は最速ですが精度は最低です。
関連リソース
- Matplotlib 公式サイト:matplotlib.org
- 公式ギャラリー:matplotlib.org/stable/gallery/index.html
- API 完全リファレンス:matplotlib.org/stable/api/index.html
- インストールガイド:matplotlib.org/stable/install/index.html
- コントリビューションガイド:matplotlib.org/stable/devel/index.html