見出し画像

Matplotlibのplot関数でx軸を1から0にする方法


Matplotlib

Matplotlibは、MATLABを参考に作られたPythonのライブラリである。
Matplotlibでは、グラフのプロットやアニメーション、3Dなどのデータを視覚化することができる。
MATLABを使用したことがある人は、ほとんどMATLABと同じような感覚で使うことができる。
Matplotlibは、外部ライブラリなのでインストールする必要がある。
インストールするには、ターミナルまたはコマンドプロンプトで以下のコードを実行する。

pip install matplotlib

Matplotlibを使う際には、importする必要がある。

from matplotlib import pyplot as plt

Matplotlibはpltとして略されることが一般的である。

plot関数

Matplotlibのplot関数の基本は、x軸のデータとy軸のデータを渡せば良い。

plt.plot(x, y)

# 必要なライブラリのimport
from matplotlib import pyplot as plt
import numpy as np

# x軸のデータ
x = np.arange(0, 1.1, 0.1)

# y軸のデータ
y = np.arange(1, 2.1, 0.1)

# プロット
plt.figure()
plt.plot(x, y)
plt.grid()
plt.show()

結果

図1 plot関数の基本

今回の内容

今回の目的は、図1のグラフのx軸を0から1ではなく、1から始まって0で終わるようにしたい。
その前にx軸が-1から0の場合を見てみる。

# 必要なライブラリのimport
from matplotlib import pyplot as plt
import numpy as np

# x軸のデータ
x = np.arange(-1, 0.1, 0.1)

# y軸のデータ
y = np.arange(1, 2.1, 0.1)

# プロット
plt.figure()
plt.plot(x, y)
plt.grid()
plt.show()

結果

図2 x軸が-1から0の場合

x軸が-1から始まる場合は、うまくいくことがわかった。
次に、x軸を1から始まって、0で終わる場合を見てみる。

# 必要なライブラリのimport
from matplotlib import pyplot as plt
import numpy as np

# x軸のデータ
x = np.arange(1, -0.1, -0.1)

# y軸のデータ
y = np.arange(1, 2.1, 0.1)

# プロット
plt.figure()
plt.plot(x, y)
plt.grid()
plt.show()

結果

図3 x軸が1から0の場合

図3より、x軸が1から0の場合は、期待した結果になっていない。
ターミナルに出力されたデータxは、図4に示すように1から始まって0で終わっている。

図4 ターミナルのデータxの結果

この現象は本家のMATLABでも同様である。Matplotlibのplot関数のドキュメントを見てみても、このやり方に関する記載はなく。また、plot関数の引数でx軸を降順にするための引数もない。

次に、グラフの外観を設定する関数を見てみる。
x軸の目盛範囲を設定する関数xlimのドキュメントを見てみると、

matplotlib.pyplot.xlim(*args, **kwargs)[source]

Get or set the x limits of the current axes.

Call signatures:
left, right = xlim() # return the current xlim
xlim((left, right)) # set the xlim to left, right
xlim(left, right) # set the xlim to left, right

If you do not specify args, you can pass left or right as kwargs, i.e.:
xlim(right=3) # adjust the right leaving left unchanged
xlim(left=1) # adjust the left leaving right unchanged

Setting limits turns autoscaling off for the x-axis.

https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.xlim.html

このドキュメントの文書を見る限り、本家MATLABのxlim関数とは異なり、rightの方がleftより大きくないといけないといった制限がない。
そこで、xlim関数を使って1から0を実行してみる。

# 必要なライブラリのimport
from matplotlib import pyplot as plt
import numpy as np

# x軸のデータ
x = np.arange(1, -0.1, -0.1)

# y軸のデータ
y = np.arange(1, 2.1, 0.1)

# プロット
plt.figure()
plt.plot(x, y)
plt.grid()
plt.xlim(1, 0)  # xlim関数のleftに1、rightに0を指定
plt.show()

結果

図5 xlim関数を用いた場合

なんということだろう。
本家MATLABと異なり、目盛範囲を設定するだけでうまくいってしまった。
図5は、図3の反転になっており、図1のグラフにおいて、x軸が1から始まって0で終わるグラフとなっている。そのため、今回の目的を達成している。

では、何にこれを活用するのかという疑問がある方もいるだろう。
それは、三相誘導電動機のトルク-すべり特性をグラフ化するために必要なのである。すべり$${s}$$は、停止時が$${s=1}$$であり、同期速度になった時が$${s=0}$$となるため、図5のようにx軸が1から始まって、0で終わるグラフとなる。
電気系以外の方にも、x軸を降順にしたいグラフがある場合に参考になればと思います。

関連記事

MATLABのplot関数でx軸を1から0にする方法
https://note.com/elemag/n/n521c691efc8c?sub_rt=share_pw

サイト

https://sites.google.com/view/elemagscience/%E3%83%9B%E3%83%BC%E3%83%A0

この記事が気に入ったらサポートをしてみませんか?