YutaKaのPython教室

Python の文法やライブラリ、API、環境構築について画像・動画・ソースコード付きで徹底解説!

Matplotlib 軸周り完璧マスターガイド | 軸・軸目盛・目盛り線の設定

Pythonでグラフを描くときは、Matplotlibを使うことが多いですが、

  • グラフの「この要素」を変更するには、「どのメソッド」を使えばいいのかわからない…。
  • 検索するのが大変で、もうMatplotlib使いたくない!

という方のために、

  • Matplotlib軸・目盛り・目盛り線の設定

について総まとめしました。

私自身も今回紹介する内容を覚えてからは、Matplotlibの軸周りの設定はある程度自力でできるようになっています。

 

【PR】自走できるAI人材とは?まずは無料オンライン説明会へ

軸・目盛り・目盛り線の設定サマリーチャート

軸周りの設定のサマリーチャートがこちらです。

以下では、各メソッドの使い方を詳しく解説していきます。

軸周りの設定の前に…

まずは、Matplotlibの基本的なグラフの描き方を紹介します。

pltメソッドとオブジェクト指向

Matplotlibユーザーを混乱させている原因の一つが、

Matplotlibのグラフ絵画には2つのスタイルがある

という点です。

  1. pltメソッド:plt.plot()から始めて、plt.○○○を使用していく
  2. オブジェクト指向:fig, ax = plt.subplots()から始めて、ax.set_○○○を使用していく

(前者のpltメソッドは、1と2の区別をしやすいように私が命名しました。)

基本的には、次の使い分けをします。

  • pltメソッド ⇒ グラフを手軽に描く
  • オブジェクト指向 ⇒ グラフの詳細設定を行う

以下の解説では、pltメソッド、オブジェクト指向の両方のメソッドを併記しています。

自分で使用する方のメソッドをチェックしてみてくださいね。

ほとんどの場合、plt.○○○ax.set_○○○の「○○○部分は共通」です。
片方の方法を覚えれば、自然ともう一方も覚えられます!

基本のグラフ

軸・軸目盛・目盛り線の解説で使用する基本グラフを作成します。
まずはモジュールを読み込み、サンプルデータを作成します。

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
 
x = np.linspace(1, 1000)
y = np.log10(x)

plt法とオブジェクト指向でそれぞれ、基本的なグラフを描いてみます。

plt.plot(x, y)
plt.show()
fig, ax = plt.subplots() 
ax.plot(x, y)
 
plt.show()

pltメソッドでもオブジェクト指向でも同じグラフが出力されます。

このグラフをもとに、軸・目盛り・目盛り線の設定方法について解説していきます。

【参考】inlineについて詳しく知りたい方はこちらをチェック

≫matplotlib inline の謎解明! |「書けと言われたので書いています」から卒業
≫matplotlib inline の謎解明! |「書けと言われたので書いています」から卒業
Jupyter Notebookでmatplotlibを使用する場合には、インポートする前に%matplotlib inlineと記述します。なぜinlineと入力しているのでしょうか?この記事では、matplotlib inlineの謎について解説していきたいと思います!
www.yutaka-note.com/entry/matplotlib_inline
 
【PR】Matplotlib関連の書籍はこちら

軸ラベルの設定

軸ラベルの設定には、xlabel()ylabel()を使用します。

ラベル名だけでなく、ラベルの見た目の設定をすることもできます。

軸ラベルの表示

軸ラベルは、xlabel()ylabel()で表示します。

表示項目 pltメソッド オブジェクト指向
x軸ラベル plt.xlabel("x軸ラベル名") ax.set_xlabel("x軸ラベル名")
y軸ラベル plt.ylabel("y軸ラベル名") ax.set_ylabel("y軸ラベル名")

軸名だけを引数として渡すと、デフォルトの見た目設定で軸ラベルが表示されます。

plt.plot(x, y)
 
plt.xlabel("x-lable")
plt.ylabel("y-lable")
 
plt.show()
fig, ax = plt.subplots() 
ax.plot(x, y)
 
ax.set_xlabel("x-label")
ax.set_ylabel("y-label")
 
plt.show()

グラフに軸ラベルが表示されています。

軸ラベルの見た目変更

オプション引数で軸ラベルの位置や見た目を調整できます。

キーワード 略称 設定内容 設定値の例
labelpad   軸からのラベルの距離 0:デフォルト位置
正の値:軸から離して表示
負の値:軸に近づけて表示
color c 文字の色 色の名前など ex) gray, red, blue
fontsize size 文字の大きさ 数値(pt)で指定 or
small, largeなど名前で指定
fontweight weight 太字に設定 bold:太字
fontstyle style 斜体に設定可能 italic:斜体
rotation   文字の回転 vertical:垂直
horizontal:水平
数値:回転角度

次の例では軸ラベルの設定を変更しています。

plt.plot(x, y)
 
plt.xlabel("x-lable", style ="italic" , size = "xx-large", color ="blue")
plt.ylabel("y-lable", labelpad = 35, weight ="bold" , size = "xx-large", rotation = "horizontal")
 
plt.show()

軸ラベルの見た目が変更されています。

【参考】テキスト、色の設定について詳しく知りたい方はこちらをチェック!

≫matplotlib pyplot.text |matplotlibのテキスト表示をマスターせよ!
≫matplotlib pyplot.text |matplotlibのテキスト表示をマスターせよ!
グラフ内にテキストでコメントを記入することってよくありますよね?グラフにコメントがあると、グラフの大事な部分を強調して説明できます。この記事では、matplotlibでグラフ内にテキストを表示する方法、テキストの見た目の変更方法について図解・サンプルコード付きで解説しています!
www.yutaka-note.com/entry/2020/01/08/080413
 
≫matplotlib color 色の指定 | 一文字指定からカラーマップの使い方まで徹底解説
≫matplotlib color 色の指定 | 一文字指定からカラーマップの使い方まで徹底解説
伝わるグラフを作るためのポイントはなんでしょうか?いかに視覚的にわかりやすいか、これが大切です。それには重要な要素に色をつけて、視覚的にうったえることが超大切!この記事では、matplotlibでの色の指定方法について、基本から応用まで徹底解説!
www.yutaka-note.com/entry/matplotlib_color
 

軸の最大値・最小値の設定

軸の最大値・最小値を変更した場合は、xlim()ylim()を使用します。

表示項目 pltメソッド オブジェクト指向
x軸ラベル plt.xlim(最小値, 最大値) ax.set_xlim(最小値, 最大値)
y軸ラベル plt.ylim(最小値, 最大値) ax.set_ylim(最小値, 最大値)

最大値、最小値を指定値に変更してみます。

plt.plot(x, y)
 
plt.xlim(0, 1000)
plt.ylim(0, 5)
 
plt.show()
fig, ax = plt.subplots() 
 
ax.plot(x, y)
ax.set_xlim(0, 1000)
ax.set_ylim(0, 5)
 
plt.show()

最大値、最小値が変更されていますね。

目盛の表示値を変更

デフォルトでは、目盛りの値は自動で設定されます。

自分で表示する値を指定したい場合には、xticks()yticks()を使用します。

表示項目 pltメソッド オブジェクト指向
x軸ラベル plt.xticks() ax.set_xticks()
y軸ラベル plt.yticks() ax.set_yticks()

ここでは、次の4つのxticks()の使い方を解説していきます。

目盛り指定の内容 pltメソッド オブジェクト指向
リストで指定 plt.xticks([ 目盛り値 ]) ax.set_xticks([ 目盛り値 ])
np.arange()で指定 plt.xticks( np.arange(start, stop, step)) ax.set_xticks( np.arange(start, stop, step))
文字列に変更 plt.xticks([ 目盛り位置 ], [表示値]) ax.set_xticks([ 目盛り位置 ])
ax.set_xticklabels([ 表示値 ])
非表示 plt.xticks([]) ax.set_xticks([])

y軸の目盛りを変更するには、xticks()の代わりに、yticks()を指定します。

リストで目盛りを指定:xticks([目盛り値のリスト])

表示したい目盛り値をリストで与えて指定することができます。

  • xticks([ 目盛り値のリスト ])

目盛り値をリストで指定してみます。

plt.plot(x, y)
plt.xticks([0, 500, 1000])
 
plt.show()

目盛り値が、指定したリストの数値に変更されました。

目盛り値のリストは等間隔で指定する必要はありません。とびとびでもOKです。

plt.plot(x, y)
plt.xticks([0, 500, 750, 1000])
 
plt.show()

np.arangeで値を指定:xticks( np.arange(start, end, step) )

xticks()には、np.arrange()で生成した、配列ndarrayを与えることもできます。

np.arange(start, stop, step)

  • 始点start
  • 終点stop
  • 数字の間隔step

を指定して、等間隔の連続する配列ndarrayを生成します。

axis_array = np.arange(0, 1001, step=100)
#⇒array([   0,  100,  200,  300,  400,  500,  600,  700,  800,  900, 1000])

これをxticks()に渡して、目盛りを設定することができます。

plt.plot(x, y)
 
plt.xticks(np.arange(0, 1001, step=100))
# np.arange(0, 1001, step=100) = 0, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000
 
plt.show()

目盛り値にnp.arange()で作成した配列が設定されました。

np.arange()の詳しい使い方は、こちらの記事をチェックしてください。

≫NumPy arange|等間隔の数列を生成する方法をサンプルコード・図解で解説!
≫NumPy arange|等間隔の数列を生成する方法をサンプルコード・図解で解説!
NumPuのarangeを使用して等間隔の数列を生成する方法を解説しています。arangeには「3つの引数の渡し方」があるのを知っていましたか?数列の始点、終点、間隔を設定する方法をサンプルコード、図解付きで徹底解説!
www.yutaka-note.com/entry/numpy_arange
 

目盛り値に文字列を設定

文字列の指定方法は、pltメソッドとオブジェクト指向で設定方法が異なります。

目盛り指定の内容 pltメソッド オブジェクト指向
目盛り値を文字列に変更 plt.xticks([ 目盛り位置], [表示値]) ax.set_xticks([ 目盛り位置])
ax.set_xticklabels([ 表示値 ])

① pltメソッドの場合

  • xticks([ 文字列を表示する目盛り位置 ], [ 表示する文字列])

というように、

  • [文字列を表示する目盛り位置]
  • [表示する文字列]

をそれぞれリストで、xticks()に渡します。

plt.plot(x, y)
 
plt.xticks([0, 500, 1000], ["zero", "five hundred", "thousand"])
 
plt.show()

目盛りの値が、指定したリストの数値に変更されました。

② オブジェクト指向の場合

  • ax.set_xticks([ 目盛り位置のリスト ])
  • ax.set_xticklabels([ 表示値のリスト ])

というように、2つのメソッドを順番に実行します。

fig, ax = plt.subplots() 
 
ax.plot(x, y)
ax.set_xticks([0, 500, 1000])
ax.set_xticklabels(["zero", "five hundred", "thousand"])
 
plt.show()

出力結果は、pltメソッドと同じです。

文字列を表示する目盛り位置は、np.arange()で設定することもできます。

目盛りを非表示

xticks()に空のリスト[]を渡すと、軸目盛を非表示にすることができます。

目盛り指定の内容 pltメソッド オブジェクト指向
x軸を非表示 plt.xticks([]) ax.set_xticks([])
y軸を非表示 plt.yticks([]) ax.set_yticks([])

x軸、y軸両方を非表示にする場合は、xticks([])yticks([])の両方を実行します。

plt.plot(x, y)
 
plt.xticks([])
plt.yticks([])
 
plt.show()

軸目盛が非表示になりました。

対数目盛に変更

対数目盛を使用する場合には、xscale('log')yscale('log')を実行します。

表示項目 pltメソッド オブジェクト指向
x軸ラベル plt.xscale('log') ax.set_xscale('log')
y軸ラベル plt.yscale('log') ax.set_yscale('log')

plt.xscale('log')のみを実行して、片対数グラフを作成してみます。

plt.plot(x, y)
 
plt.xscale("log")
 
plt.show()

x軸がlogスケールに変更され、片対数グラフになりました。

補助目盛を追加

デフォルトでは補助目盛は非表示なっています。

補助目盛を表示するには、minorticks_on()を実行します。

表示項目 pltメソッド オブジェクト指向
補助目盛 plt.minorticks_on() ax.minorticks_on()

plt.minorticks_on()で補助目盛を表示してみます。

plt.plot(x, y)
 
plt.minorticks_on()
 
plt.show()

補助目盛が表示されています。

x軸またはy軸のみ補助目盛を表示する場合には、LocatorFormatterなどを使用しますが、ここでは割愛します。

目盛り線の表示・設定

デフォルトでは目盛り線は非表示になっています。

目盛り線を表示するには、grid()を使用します。

表示項目 pltメソッド オブジェクト指向
目盛り線 plt.grid() ax.grid()

引数を省略すると、x/y軸両方の主目盛り線に目盛り線が引かれます。

plt.plot(x, y)
 
plt.grid()
 
plt.show()

引数を与えると:

  • 線を引く軸(x軸/y軸)の指定・主/補助目盛りの指定
  • 目盛り線の見た目変更

をすることができます。

線を引く軸の指定・主/補助目盛りの指定

キーワード引数で

  • 目盛り線を引く軸(x軸/y軸):axis
  • 主/補助目盛り:which

を指定することができます。

キーワード 解説
axis "x" x軸を指定
  "y" y軸を指定
  "both" x/y軸両方を指定(デフォルト)
which "major" 主目盛り線を指定(デフォルト)
  "minor" 補助目盛り線を指定
  "both" 主/補助目盛り線を指定

補助目盛に目盛り線を引くには、事前に補助目盛を表示しておく必要があります。

plt.plot(x, y)
 
plt.grid(axis="x")
plt.minorticks_on()
plt.grid(which = "both", axis="y")
 
plt.show()

x軸には主目盛り線、y軸には主/副両目盛り線が引かれています。

目盛り線の見た目変更

キーワード引数で補助線の見た目を変更することができます。

よく使用する設定項目を下表にまとめています。

キーワード 略称 設定先
color c 目盛り線の色の設定 色の名前など ex) gray, red, blue
alpha   線の透明度 0(完全透明)~(不透明)
linewidth lw 線の太さ 数値ptで指定
linestyle ls 線のスタイル -, --, -., :, で指定

目盛り線を灰色の点線で表示してみます。

plt.plot(x, y)
 
plt.grid(color = "gray", linestyle="--")
 
plt.show()

目盛り線の見た目が変更されています。

【参考】色の設定について詳しく知りたい方はこちらをチェック!

≫matplotlib color 色の指定 | 一文字指定からカラーマップの使い方まで徹底解説
≫matplotlib color 色の指定 | 一文字指定からカラーマップの使い方まで徹底解説
伝わるグラフを作るためのポイントはなんでしょうか?いかに視覚的にわかりやすいか、これが大切です。それには重要な要素に色をつけて、視覚的にうったえることが超大切!この記事では、matplotlibでの色の指定方法について、基本から応用まで徹底解説!
www.yutaka-note.com/entry/matplotlib_color
 

軸周りの設定総まとめ

今回紹介した軸周りの設定を全体的に適用した例を紹介します。

pltメソッド、オブジェクト指向それぞれで次のようなグラフを描いてみましょう

pltメソッド

plt.plot(x, y)
 
# 軸ラベルの設定
plt.xlabel("x-label", size = "large", color ="green")
plt.ylabel("y-label", size = "large", color="blue")
 
# 軸の最大値・最小値の設定
plt.xlim(0, 1200)
plt.ylim(0, 4)
 
# 目盛りの表示値を変更
plt.xticks(np.arange(0, 1201, step=300))
plt.yticks([0, 1, 2, 3, 4], [" ", "I", "II", "III", "IV"])
 
# 補助目盛を表示
plt.minorticks_on()
 
# 目盛り線の表示
plt.grid(which="major", color="black", alpha=0.5)
plt.grid(which="minor", color="gray", linestyle=":")
 
plt.show()

オブジェクト指向

fig, ax = plt.subplots()
 
ax.plot(x, y)
 
# 軸ラベルの設定
ax.set_xlabel("x-label", size = "large", color ="green")
ax.set_ylabel("y-label", size = "large", color="blue")
 
# 軸の最大値・最小値の設定
ax.set_xlim(0, 1200)
ax.set_ylim(0, 4)
 
# 目盛りの表示値を変更
ax.set_xticks(np.arange(0, 1201, step=300))
ax.set_yticks([0, 1, 2, 3, 4])
ax.set_yticklabels([" ", "I", "II", "III", "IV"])
 
# 補助目盛を表示
ax.minorticks_on()
 
# 目盛り線の表示
ax.grid(which="major", color="black", alpha=0.5)
ax.grid(which="minor", color="gray", linestyle=":")
 
plt.show()

おわりに:Matplotlib関連記事の紹介

今回は、Matplotlibの軸・目盛り・目盛り線の設定について基本的なものを解説しました。

もっとMatplotlibを自由自在に操作したい!という方へのおススメコンテンツはこちらです!

≫Matplotlib inline の謎解明! |「書けと言われたので書いています」から卒業
≫Matplotlib inline の謎解明! |「書けと言われたので書いています」から卒業
Jupyter Notebookでmatplotlibを使用する場合には、インポートする前に%matplotlib inlineと記述します。なぜinlineと入力しているのでしょうか?この記事では、matplotlib inlineの謎について解説していきたいと思います!
www.yutaka-note.com/entry/matplotlib_inline
 
≫Matplotlib plt.textよく使うもの徹底解説|テキスト表示をマスター!
≫Matplotlib plt.textよく使うもの徹底解説|テキスト表示をマスター!
グラフ内にテキストでコメントを記入することってよくありますよね?グラフにコメントがあると、グラフの大事な部分を強調して説明できます。この記事では、matplotlibでグラフ内にテキストを表示する方法、テキストの見た目の変更方法について図解・サンプルコード付きで解説しています!
www.yutaka-note.com/entry/2020/01/08/080413
 
≫Matplotlib color 色の指定 | 一文字指定からカラーマップの使い方まで徹底解説
≫Matplotlib color 色の指定 | 一文字指定からカラーマップの使い方まで徹底解説
伝わるグラフを作るためのポイントはなんでしょうか?いかに視覚的にわかりやすいか、これが大切です。それには重要な要素に色をつけて、視覚的にうったえることが超大切!この記事では、matplotlibでの色の指定方法について、基本から応用まで徹底解説!
www.yutaka-note.com/entry/matplotlib_color
 
≫Matplotlib 軸周り完璧マスターガイド | 軸・軸目盛・目盛り線の設定
≫Matplotlib 軸周り完璧マスターガイド | 軸・軸目盛・目盛り線の設定
Matplotlibで大変なのが軸周りの設定!グラフの「この要素」を変更するには、「どのメソッド」を使えばいいのかわからない…。という方のために、Matplotlibの軸・目盛り・目盛り線の設定について総まとめしました!これで軸周りの設定がだいぶ楽になります。軸周り完ぺきマスターガイド!
www.yutaka-note.com/entry/matplotlib_axis
 
≫Matplotlib 棒グラフを徹底解説|複数系列・積み上げ棒グラフ全てOK
≫Matplotlib 棒グラフを徹底解説|複数系列・積み上げ棒グラフ全てOK
Matplotlibで棒グラフを作成する方法がよくわからない…。 棒グラフで悩むなら、MatplotlibあきらめてExcel使おうかな…。 と思ったことはありませんか?そんな方のために、Matplotlibの棒グラフ作成方法を徹底的に解説しました!複数系列?積み上げ棒グラフ?全部大丈夫!
www.yutaka-note.com/entry/matplotlib_bar
 
≫Matplotlib 散布図を徹底解説!|基本設定からバブルチャートまで
≫Matplotlib 散布図を徹底解説!|基本設定からバブルチャートまで
Matplotlibで散布図を作成する方法がよくわからない…。散布図って何のためにあるの?全部、plt.plotでグラフ作ればよくない?という方のために、「Matplotlibの散布図の作成方法、散布図を応用したデータの可視化例」についてまとめしました!
www.yutaka-note.com/entry/matplotlib_scatter
 
≫Matplotlib 円グラフ作成方法|Excel風グラフ、ドーナツグラフも解説
≫Matplotlib 円グラフ作成方法|Excel風グラフ、ドーナツグラフも解説
Matplotlibで円グラフを作成する方法がよくわからない…。何を設定すれば、自分の描きたい円グラフになるのかわからない!という方のために、「Matplotlibの円グラフ作成方法」、「Excel風の見た目に設定する方法」、「グラフやラベルの設定方法」についてまとめしました!これで自由に円グラフを作成できます!
www.yutaka-note.com/entry/matplotlib_pie
 
≫Matplotlib subplotの使い方徹底図解!|一つの図に複数グラフを描く
≫Matplotlib subplotの使い方徹底図解!|一つの図に複数グラフを描く
Matplotlibで一つの図の中に複数のグラフを並べるにはどうすればいいの?subplotでグラフを並べられるらしいけど、使い方がよくわからない!という方のために、「plt.subplot()の基本的な使い方」を画像付きで解説していきます!plt.subplot()でプロットをキレイに配置して、見やすく人に伝わるグラフを目指しましょう!
www.yutaka-note.com/entry/2020/01/02/232925
 
≫【完全保存版】Matplotlib plt.plot徹底解説 | 基本操作を総まとめ!
≫【完全保存版】Matplotlib plt.plot徹底解説 | 基本操作を総まとめ!
Matplotlibのplt.plotを使用したグラフを作成、グラフの見た目変更、タイトルや軸の設定など基本事項について徹底解説!!この記事を読めば、plt.plotで手軽に手早く簡単に、キレイなグラフ作成可能に!?
www.yutaka-note.com/entry/matplotlib_pyplot
 
≫Matplotlib アニメーション作成入門編 |ArtistAnimation徹底解説!
≫Matplotlib アニメーション作成入門編 |ArtistAnimation徹底解説!
Matplotlibではアニメーションも作成できますが、初めての人には少し複雑です…。「 Matplotlibでアニメーションを描きたいけど、何から始めればいいの?」という方のために、 Matplotlibでアニメーションを超簡単に作成・保存する方法、アニメーション作成用の超基本テンプレを画像・サンプルコード付きで紹介していきます!
www.yutaka-note.com/entry/matplotlib_artist_anim
 
≫Matplotlib FuncAnimation徹底解説|更新用関数はこう作ればいい!
≫Matplotlib FuncAnimation徹底解説|更新用関数はこう作ればいい!
Matplotlibではアニメーションも作成できますが、初めての人には少し複雑です…。「Matplotlibでアニメーションを描きたいけど、よくわからない!」、「FuncAnimationで更新用関数作るって何?意味不明!!」という方のために、FuncAnimationでアニメーションを作成する超基本、更新用関数の作成方法、重要メソッドを画像・サンプルコード付きで紹介していきます!
www.yutaka-note.com/entry/matplotlib_func_anim
 
Matplotlib plt.figure()を使う理由|FigureとAxesの関係を把握しよう
Matplotlib plt.figure()を使う理由|FigureとAxesの関係を把握しよう
Matplotlibでグラフを描くとき「FigureとかAxesとかMatplotlib独特の単語が多くてよくわからない」、「Figureを作った後、結局どうやってプロットすればいいの?」という方のために、FigureとAxesの関係性を図解!FigureにAxesを追加する方法厳選3パターンを解説します!覚えておきたいFigureの設定・操作(サイズ変更、レイアウト調整など)も画像・サンプルコード付きで解説!
www.yutaka-note.com/entry/matplotlib_figure
 

Twitter@YutaKaでは、ほぼ毎日pythonに関する情報を発信しています。

気楽にツイートしているので、気軽にフォローしてください!