スポンサーリンク

Python初心者でも簡単!matplotlibを使った対数グラフの描き方を徹底解説

2023年3月17日

 Pythonでデータ処理を行った結果を簡単にグラフに出力したい、あるいは、学校や会社に提出するレポートにグラフを貼りたいと思ったことはありませんか?

Excelでグラフを描きたいんだけど、Microsoft Officeにお金を使いたくない(高いですよね)と思ったことはありませんか?

この記事では、初心者の方向けに、Pythonのmatplotlibパッケージを使って対数グラフを簡単に描く方法を最新の情報をもとに丁寧に解説していきます。

ワンステップずつコードを解説しているのでどなたでもPythonで対数グラフが描けるようになります!

是非、この機会にmatplotlibパッケージを使った対数グラフにトライしてみましょう。

準備

 Pythonの実行環境の構築やmatplotlibパッケージのインストールがまだの方は以下の記事の「準備」の章を参考にしてPythonの実行環境の構築とmatplotlibのインストールを済ませてください。

y軸の片対数グラフ

 y軸の片対数グラフの書き方を解説していきます。

全体のコード

 上記グラフを作成するためのコードは以下になります。

 ここでは、関数\(y=e^{-\frac{x}{2}}\)のグラフを描画しています。次節以降で、以下のコードをワンステップずつ解説していきます。

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

# Figureを作成する。
fig = plt.figure()
# Axesを作成する。
ax1 = fig.add_subplot(111)

# データを描画する。
x = np.arange(.01, 20.0, .01)
ax1.plot(x, np.exp(-x / 2.0))

# Figureの解像度と色を設定する。
fig.set_dpi(150)
fig.set_facecolor("whitesmoke")

# Axesのタイトルと色を設定する。
ax1.set_title(r"$y=e^{-\frac{x}{2}}$")
ax1.set_facecolor("whitesmoke")

# x軸とy軸のラベルを設定する。
ax1.set_xlabel("x")
ax1.set_ylabel("y")

# x軸の主目盛りを設定する。
ax1.xaxis.set_major_locator(mpl.ticker.MultipleLocator(5))

# y軸を対数目盛りに設定する。
ax1.set_yscale('log')

# グリッドを表示する。
ax1.grid(True, "major", linestyle="-", linewidth=.7)
ax1.grid(True, "minor", "y", linestyle="-", linewidth=.3)

# グラフを表示する。
plt.show()

パッケージのインポート

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

 必要なパッケージとモジュールをインポートしています。ここでは、数値計算のためのnumpyパッケージ、グラフ描画のためのmatplotlibパッケージとpyplotモジュールをインポートしています。この部分のコードは、おまじないだと思って頂いて構いません。

FigureとAxesの作成

# Figureを作成する。
fig = plt.figure()
# Axesを作成する。
ax1 = fig.add_subplot(111)

 グラフを描画するためには、最初にFigureとAxesを作成する必要があります。6行目でFigureを作成し、8行目でAxesを作成しています。Figureはグラフを貼るための台紙で、Axesはグラフ本体といったイメージです。今回は説明しませんが、Figureに複数のAxesを貼ることもできます。

データの描画

# データを描画する。
x = np.arange(.01, 20.0, .01)
ax1.plot(x, np.exp(-x / 2.0))

 11行目で関数の定義域をリストで用意し、12行目で関数\(y=e^{-\frac{x}{2}}\)の値を計算して、Axesクラスのplotメソッドでデータを描画しています。

Figureの解像度と色

# Figureの解像度と色を設定する。
fig.set_dpi(150)
fig.set_facecolor("whitesmoke")

 Figure(台紙です)の解像度(DPI)と色を設定してます。ここでは、Figure(台紙です)の解像度(DPI)に「150」を設定し、色に「whitesmoke」(Whitesmoke)を指定しています。なお、解像度のデフォルト値は100です。グラフを構成する各部位の色の選択肢は以下のページに掲載されています。

Axesのタイトルと色

# Axesのタイトルと色を設定する。
ax1.set_title(r"$y=e^{-\frac{x}{2}}$")
ax1.set_facecolor("whitesmoke")

 Axes(グラフ本体です)のタイトルと色を設定しています。ここでは、Axes(グラフ本体です)のタイトルに「\(y=e^{-\frac{x}{2}}\)」を設定し、色に「whitesmoke」(Whitesmoke)を指定しています。Axes(グラフ本体です)の色は、Figureの色を設定したときと同じようにいろいろな色を選択することができます。

x軸とy軸のラベル

# x軸とy軸のラベルを設定する。
ax1.set_xlabel("x")
ax1.set_ylabel("y")

 \(x\)軸と\(y\)軸のラベルを設定しています。ここでは、\(x\)軸のラベルに「x」を、\(y\)軸のラベルに「y」を設定しています。

x軸の主目盛り

# x軸の主目盛りを設定する。
ax1.xaxis.set_major_locator(mpl.ticker.MultipleLocator(5))

 \(x\)軸の主目盛りの位置を設定しています。ここでは、MultipleLocatorというロケータを使って「5」おきに目盛りのラベルが表示されるように設定しています。

対数目盛り

# y軸を対数目盛りに設定する。
ax1.set_yscale('log')

 \(y\)軸を対数目盛りに設定しています。

グリッド

# グリッドを表示する。
ax1.grid(True, "major", linestyle="-", linewidth=.7)
ax1.grid(True, "minor", "y", linestyle="-", linewidth=.3)

 \(x\)軸と\(y\)軸の主目盛りに対応したグリッド線を太さ「0.7」で設定しています。また、\(y\)軸の副目盛りに対応したグリッド線を太さ「0.3」で設定しています。ここでは、グリッド線として「-」(実線)を指定しています。他の選択肢は、以下のページに掲載されています。実線の他に点線や破線や一点鎖線を選択することができます。

グラフの表示

# グラフを表示する。
plt.show()

 最後に、グラフを表示しています。

x軸の片対数グラフ

 x軸の片対数グラフの書き方を解説していきます。

x軸の片対数グラフ

全体のコード

 上記グラフを作成するためのコードは以下になります。

 ここでは、関数\(y=sin(2\pi{}x)\)のグラフを描画しています。次節以降で、以下のコードをワンステップずつ解説していきます。

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

# Figureを作成する。
fig = plt.figure()
# Axesを作成する。
ax1 = fig.add_subplot(111)

# データを描画する。
x = np.arange(.01, 20.0, .01)
ax1.plot(x, np.sin(2 * np.pi * x))

# Figureの解像度と色を設定する。
fig.set_dpi(150)
fig.set_facecolor("whitesmoke")

# Axesのタイトルと色を設定する。
ax1.set_title(r"$y=sin(2\pi{}x)$")
ax1.set_facecolor("whitesmoke")

# x軸とy軸のラベルを設定する。
ax1.set_xlabel("x")
ax1.set_ylabel("y")

# x軸を対数目盛りに設定する。
ax1.set_xscale('log')

# y軸の主目盛りを設定する。
ax1.yaxis.set_major_locator(mpl.ticker.MultipleLocator(.5))

# グリッドを表示する。
ax1.grid(True, "major", linestyle="-", linewidth=.7)
ax1.grid(True, "minor", "x", linestyle="-", linewidth=.3)

# グラフを表示する。
plt.show()

パッケージのインポート

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

 必要なパッケージとモジュールをインポートしています。ここでは、数値計算のためのnumpyパッケージ、グラフ描画のためのmatplotlibパッケージとpyplotモジュールをインポートしています。この部分のコードは、おまじないだと思って頂いて構いません。

FigureとAxesの作成

# Figureを作成する。
fig = plt.figure()
# Axesを作成する。
ax1 = fig.add_subplot(111)

 グラフを描画するためには、最初にFigureとAxesを作成する必要があります。6行目でFigureを作成し、8行目でAxesを作成しています。Figureはグラフを貼るための台紙で、Axesはグラフ本体といったイメージです。今回は説明しませんが、Figureに複数のAxesを貼ることもできます。

データの描画

# データを描画する。
x = np.arange(.01, 20.0, .01)
ax1.plot(x, np.sin(2 * np.pi * x))

 11行目で関数の定義域をリストで用意し、12行目で関数\(y=sin(2\pi{}x)\)の値を計算して、Axesクラスのplotメソッドでデータを描画しています。

Figureの解像度と色

# Figureの解像度と色を設定する。
fig.set_dpi(150)
fig.set_facecolor("whitesmoke")

 Figure(台紙です)の解像度(DPI)と色を設定してます。ここでは、Figure(台紙です)の解像度(DPI)に「150」を設定し、色に「whitesmoke」(Whitesmoke)を指定しています。なお、解像度のデフォルト値は100です。グラフを構成する各部位の色の選択肢は以下のページに掲載されています。

Axesのタイトルと色

# Axesのタイトルと色を設定する。
ax1.set_title(r"$y=sin(2\pi{}x)$")
ax1.set_facecolor("whitesmoke")

 Axes(グラフ本体です)のタイトルと色を設定しています。ここでは、Axes(グラフ本体です)のタイトルに「\(y=sin(2\pi{}x)\)」を設定し、色に「whitesmoke」(Whitesmoke)を指定しています。Axes(グラフ本体です)の色は、Figureの色を設定したときと同じようにいろいろな色を選択することができます。

x軸とy軸のラベル

# x軸とy軸のラベルを設定する。
ax1.set_xlabel("x")
ax1.set_ylabel("y")

 \(x\)軸と\(y\)軸のラベルを設定しています。ここでは、\(x\)軸のラベルに「x」を、\(y\)軸のラベルに「y」を設定しています。

対数目盛り

# x軸を対数目盛りに設定する。
ax1.set_xscale('log')

 \(x\)軸を対数目盛りに設定しています。

y軸の主目盛り

# y軸の主目盛りを設定する。
ax1.yaxis.set_major_locator(mpl.ticker.MultipleLocator(.5))

 \(y\)軸の主目盛りの位置を設定しています。ここでは、MultipleLocatorというロケータを使って「0.5」おきに目盛りのラベルが表示されるように設定しています。

グリッド

# グリッドを表示する。
ax1.grid(True, "major", linestyle="-", linewidth=.7)
ax1.grid(True, "minor", "x", linestyle="-", linewidth=.3)

 \(x\)軸と\(y\)軸の主目盛りに対応したグリッド線を太さ「0.7」で設定しています。また、\(x\)軸の副目盛りに対応したグリッド線を太さ「0.3」で設定しています。ここでは、グリッド線として「-」(実線)を指定しています。他の選択肢は、以下のページに掲載されています。実線の他に点線や破線や一点鎖線を選択することができます。

グラフの表示

# グラフを表示する。
plt.show()

 最後に、グラフを表示しています。

両対数グラフ

 両対数グラフの書き方を解説していきます。

両対数グラフ

全体のコード

 上記グラフを作成するためのコードは以下になります。

 ここでは、関数\(y=x^2\)のグラフを描画しています。次節以降で、以下のコードをワンステップずつ解説していきます。

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

# Figureを作成する。
fig = plt.figure()
# Axesを作成する。
ax1 = fig.add_subplot(111)

# データを描画する。
x = np.arange(.01, 20.0, .01)
ax1.plot(x, x ** 2)

# Figureの解像度と色を設定する。
fig.set_dpi(150)
fig.set_facecolor("whitesmoke")

# Axesのタイトルと色を設定する。
ax1.set_title(r"$y=x^2$")
ax1.set_facecolor("whitesmoke")

# x軸とy軸のラベルを設定する。
ax1.set_xlabel("x")
ax1.set_ylabel("y")

# x軸とy軸を対数目盛りに設定する。
ax1.set_xscale('log')
ax1.set_yscale('log')

# グリッドを表示する。
ax1.grid(True, "major", linestyle="-", linewidth=.7)
ax1.grid(True, "minor", linestyle="-", linewidth=.3)

# グラフを表示する。
plt.show()

パッケージのインポート

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

 必要なパッケージとモジュールをインポートしています。ここでは、数値計算のためのnumpyパッケージ、グラフ描画のためのmatplotlibパッケージとpyplotモジュールをインポートしています。この部分のコードは、おまじないだと思って頂いて構いません。

FigureとAxesの作成

# Figureを作成する。
fig = plt.figure()
# Axesを作成する。
ax1 = fig.add_subplot(111)

 グラフを描画するためには、最初にFigureとAxesを作成する必要があります。6行目でFigureを作成し、8行目でAxesを作成しています。Figureはグラフを貼るための台紙で、Axesはグラフ本体といったイメージです。今回は説明しませんが、Figureに複数のAxesを貼ることもできます。

データの描画

# データを描画する。
x = np.arange(.01, 20.0, .01)
ax1.plot(x, x ** 2)

 11行目で関数の定義域をリストで用意し、12行目で関数\(y=x^2\)の値を計算して、Axesクラスのplotメソッドでデータを描画しています。

Figureの解像度と色

# Figureの解像度と色を設定する。
fig.set_dpi(150)
fig.set_facecolor("whitesmoke")

 Figure(台紙です)の解像度(DPI)と色を設定してます。ここでは、Figure(台紙です)の解像度(DPI)に「150」を設定し、色に「whitesmoke」(Whitesmoke)を指定しています。なお、解像度のデフォルト値は100です。グラフを構成する各部位の色の選択肢は以下のページに掲載されています。

Axesのタイトルと色

# Axesのタイトルと色を設定する。
ax1.set_title(r"$y=x^2$")
ax1.set_facecolor("whitesmoke")

 Axes(グラフ本体です)のタイトルと色を設定しています。ここでは、Axes(グラフ本体です)のタイトルに「\(y=x^2\)」を設定し、色に「whitesmoke」(Whitesmoke)を指定しています。Axes(グラフ本体です)の色は、Figureの色を設定したときと同じようにいろいろな色を選択することができます。

x軸とy軸のラベル

# x軸とy軸のラベルを設定する。
ax1.set_xlabel("x")
ax1.set_ylabel("y")

 \(x\)軸と\(y\)軸のラベルを設定しています。ここでは、\(x\)軸のラベルに「x」を、\(y\)軸のラベルに「y」を設定しています。

対数目盛り

# x軸とy軸を対数目盛りに設定する。
ax1.set_xscale('log')
ax1.set_yscale('log')

 \(x\)軸と\(y\)軸を対数目盛りに設定しています。

グリッド

# グリッドを表示する。
ax1.grid(True, "major", linestyle="-", linewidth=.7)
ax1.grid(True, "minor", linestyle="-", linewidth=.3)

 \(x\)軸と\(y\)軸の主目盛りに対応したグリッド線を太さ「0.7」で設定しています。また、\(x\)軸と\(y\)軸の副目盛りに対応したグリッド線を太さ「0.3」で設定しています。ここでは、グリッド線として「-」(実線)を指定しています。他の選択肢は、以下のページに掲載されています。実線の他に点線や破線や一点鎖線を選択することができます。

グラフの表示

# グラフを表示する。
plt.show()

 最後に、グラフを表示しています。

対数軸の副目盛りが表示されない場合

 以下に対策を記事にしました。

作成したグラフの保存

 作成したグラフは、表示された画面の左下に並んでいるボタンのうち保存ボタンをクリックすることで画像ファイルとして保存することができます。

作成したグラフの保存


以上、「Python初心者でも簡単!matplotlibの使い方を徹底解説(対数グラフ編)」でした。


この記事を書いた人

プロフィール

 その日暮らし

 こんにちは、その日暮らしです/地方国立大理系院卒→大手大企業就職→ソフト開発二十年超→メンタル壊して退職→ちょっと回復→資格取得頑張る(簿記3級と応用情報は合格でデスペはギブアップ)→コロナ禍で再就職無理→離婚orz→実家へ出戻ってこどおじ化(笑)→WordPressの勉強のためブログに挑戦/そんな訳でブログは始めたばかりですが日々いろんなことを試して得た知識を投稿していこうと思ってます/以上