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 メソッドを併記しています。


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()配列を画像ファイルとして保存
colormapscolormap レジストリオブジェクト
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()水平分割棒グラフ(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.yaxisx/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.staleArtistが再描画を必要とするかどうかをマーク(プロパティ)
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.zorderzorder を取得/設定(属性)
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.axesAxes リスト(属性)
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.dpiDPI 解像度(属性)
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デフォルトスタイル、明瞭でニュートラル
ggplotR の ggplot2 スタイルを模倣、グレー背景に白いグリッド
seaborn-v0_8seaborn ライブラリに似たモダンなスタイル
seaborn-v0_8-brightseaborn ブライトトーン
seaborn-v0_8-colorblindseaborn 色覚障害者に優しいトーン
seaborn-v0_8-darkseaborn ダークスタイル
seaborn-v0_8-dark-paletteseaborn ダークパレット
seaborn-v0_8-darkgridseaborn ダーク+グリッド
seaborn-v0_8-deepseaborn ダークトーン
seaborn-v0_8-mutedseaborn ミュートトーン
seaborn-v0_8-notebookseaborn notebook スタイル
seaborn-v0_8-paperseaborn 論文スタイル
seaborn-v0_8-pastelseaborn パステルトーン
seaborn-v0_8-posterseaborn ポスタースタイル
seaborn-v0_8-talkseaborn プレゼンテーションスタイル
seaborn-v0_8-ticksseaborn 目盛りスタイル
seaborn-v0_8-whiteseaborn 白背景
seaborn-v0_8-whitegridseaborn 白背景+グリッド
fivethirtyeightFiveThirtyEight のデータジャーナリズムスタイルを模倣
dark_backgroundダーク背景。プレゼンや夜間使用に適する
bmhBayesian Methods for Hackers スタイル
grayscaleグレースケールスタイル。白黒印刷に適する
classicMatplotlib v1.x クラシックスタイル
fast簡素化されたスタイル。レンダリングが高速
Solarize_Light2Solarized ライトテーマ
tableau-colorblind10Tableau 色覚障害者に優しいパレット

よく使う rcParams 設定

パラメータ説明サンプル値
figure.figsizeデフォルトの図のサイズ(インチ)[8, 6]
figure.dpiデフォルトの解像度100
figure.facecolorFigure の背景色'white'
figure.edgecolorFigure の枠線色'white'
font.size全体のフォントサイズ12
font.familyフォントファミリー'sans-serif'
font.sans-serifサンセリフフォントのリスト['DejaVu Sans', ...]
axes.titlesizeタイトルのフォントサイズ'large'
axes.labelsize軸ラベルのフォントサイズ'medium'
axes.gridデフォルトでグリッドを表示するかどうかFalse
axes.facecolorAxes の背景色'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.labelsizex 軸目盛りラベルのサイズ'medium'
ytick.labelsizey 軸目盛りラベルのサイズ'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 matplotlib.pyplot as plt
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 matplotlib.pyplot as plt
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 matplotlib.pyplot as plt
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 matplotlib.pyplot as plt
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 matplotlib.pyplot as plt
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 matplotlib.pyplot as plt
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
その他の拡張