Matplotlibではグラフを描いたけど軸範囲が自動で希望しないグラフしかできないとゆう方に.本記事では軸範囲をユーザーの思い通りに操作する方法について解説します.(主な操作、軸範囲の指定、複数グラフで軸範囲を揃える,対数軸にする)
スポンサーリンク
軸の範囲を設定する
・X軸Y軸の最大最小の設定はそれぞれaxes.set_xlimとaxes.set_ylimの引数で行います.
・axes.set_xlim(left,right)の引数のついて
axes.set_xlim(100,500) :x軸範囲は100から500です.
axes.set_xlim(min(x),max(x)) :X軸範囲は配列(X)の最小値から最大値です.
import numpy as np
import matplotlib.pyplot as plt
# グラフを出力
fig = plt.figure()
ax1 = fig.add_subplot(1,2,1)
ax2 = fig.add_subplot(1,2,2)
x1=np.arange(-20, 20.0, 0.1)
y1=x1**3-2*x1
line1=ax1.plot(x1,y1) #ax1グラフを描く
line1=ax2.plot(x1,y1) #ax2グラフを描く
ax2.set_xlim(-4,4) #X軸の範囲を設定
ax2.set_ylim(-4,4) #Y軸の範囲を設定
ax1.set_title("None" )
ax2.set_title("XY_limit")
plt.show()
左側のグラフの軸はオートスケール、右側のグラフはX軸とY軸それぞれ軸範囲を-2から2までに設定しています.軸範囲を変えるだけでグラフの見え方が変わってきます.
複数グラフの軸範囲を揃える
・複数グラフの軸範囲を揃えるにはplt.subplotsの引数より行い,X軸Y軸それぞれの引数はsharex=True,sharey=Trueです.
例 ax1とax2のX軸とY軸の範囲を揃えて,1行2列のサブプロットを追加する.
fig,(ax1, ax2)=plt.subplots(nrows=2, ncols=1, sharex=True,sharey=True)
#グラフ軸を共有
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
#X軸とy軸を共有する.1行2列のサブプロットを追加する
fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, sharex=True,sharey=True)
x1=np.arange(0.0, 2.0, 0.01)
y1=np.sin(2*np.pi*x1)
x2=np.arange(0.0, 4.0, 0.01)
y2=2*np.sin(2*np.pi*x2)
line1=ax1.plot(x1,y1) #折れ線1グラフを描く
line2=ax2.plot(x2,y2) #折れ線2グラフを描く
ax1.set_xlim(0.5,4.0)#X軸の範囲を設定
plt.show()
X軸Y軸が同期できて見やすいグラフになりました.サンプルプログラムではax1のX軸範囲を設定していますが,ax2を設定しても同じグラフになります.
対数軸グラフの作成
・X軸Y軸を対数グラフにするにはそれぞれaxes.set_xscale()とaxes.set_yscale()の引数としてlogを渡します.
axes.set_xscale(“log”):X軸対数
axes.set_xscale(“log”):Y軸対数
・ax2グラフのX軸を対数に設定したグラフを作成します.
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax1 = fig.add_subplot(1,2,1)
ax2 = fig.add_subplot(1,2,2)
x1 = np.arange(1, 100, 1.0)
y1 = np.log10(x1)
line1 = ax1.plot(x1,y1) #ax1グラフを描く
line1 = ax2.plot(x1,y1) #ax2グラフを描く
ax2.set_xscale("log") #ax2グラフのX軸を対数にする
ax1.set_title("Linear" )
ax2.set_title("X-Logarithm")
plt.show()
左側のグラフは通常のグラフ、左側のグラフはX軸が対数となりグラフが直線表示されました.
・お勧めの関連記事
・Pythonの記事一覧
コメント