【Python】 グラフを描画 その2

ICT

 前回の続き。
 import matplotlib.pyplot as pltから始まって、
 plt.show()でビューアが起動して図やグラフが描画されるが、
 plt.plot()の中の-:---.o^x*などにすると線ではなく点(マーカー)のプロットになる。

図1

 ^v><は向きの異なる▲。1234は各々向きの異なるY。その他、,が点、.が小さい○。
 ms(=markersize)でマーカーサイズ指定。

 legend()の中のupper leftlowerrightに変えれば凡例の位置が変わる。デフォルトは右上(upper right
  追)デフォルトはloc="best"だった
 centerも指定できる。

スポンサーリンク

x軸 配列[]、array([])

 上図のlinspace()の要素数は、各々(始点・終点含めて)25。
 返り値の配列が、
 array([ , ])
になっていたので、例えば、

x = np.array([0,3,6,9,12,15,18])
y = x**3
plt.plot(x,y,lw=5)
plt.show()

図2

 np.array()がないとエラーになるが、yも同じような配列で指定すればエラーは出ない。

x = [0,3,6,9,12,15,18]
y = [0,27,216,9**3,12**4,15**3,18**3]
plt.plot(x,y,lw=5)
plt.show()
図3

 x、yの値(データ)を.csvファイルなどから読み込む場合、pandasライブラリをimportして使う。

 散布図の場合、plt.plot()の代わりにplt.scatter()が使える。

 散布図の描画から統計の世界へ入り込んで、R言語と同じようなことができる。

スポンサーリンク

比例/反比例

 ふりだしに戻って、今度は片や増えて片や減るグラフを描画。

図4
x = np.linspace(2,8,50)
y = -8*x+80
y2 = (x-10)**2
y3 = 128/x
plt.plot(x,y,"-",color="purple",label="A")
plt.plot(x,y2,"-",color="red",label="B")
plt.plot(x,y3,"-",color="orange",label="C")
plt.xlabel("x")
plt.ylabel("y")
plt.legend()
plt.show()

 俗にトレードオフ Trade-offと呼ばれる関係。一方を求めてもう一方を失う。
 二律背反は英語でアンチノミー Antinomyだから、ちょっと違うようだ。
 前者は和訳が「取引」で、曲がりなりにも成立しうるが、
 後者は両立しない関係。

  •  経済を回す ○
  •  感染防止 ○
  •  経済を回しながら感染防止する --- うまくいかない

みたいな関係。

 増えるか減るか不変か---。
 増える場合、トレードオン Trade-onと呼ばないのかな、と思って調べてみたら一部でウィンウィン Win-Winの意味で使われているようだ。一方を求めてもう一方も得る。
 ただし、英英だと=take advantage ofになっていて、つけ入る、出し抜くみたいな意味合い。トレードオフよりも感じ悪い。

 片方が増えるのに伴ってもう片方が増えるなら、比例関係にある。
 と考えがちだが、違っている場合もある。
 比例関係はy=kx(y∝x)で直線だが、
 曲線描いて増えていく場合も多々ある。
 ただし、曲線でも例えばy=kx2は「x2に比例する」と言って直線に変えられる。

 反比例は比例よりも手ごわい。
 反比例だと思っていたら負の比例だった……。
 反比例=トレードオフではなく、反比例はトレードオフの一部。
 上図のは負の比例。y=-kx。やがてy=0になる。
 反比例はy=k/x(y∝-1x)で曲線。上図の。y=0にならない。
 曲線でも上図のは別物。(x-10)

 サブプロット subplot()を使うとビューアに複数の図・グラフが描かれる。

図5 上の図は図4と同じ

 plt.subplot(2,1,2)は、2行1列(上下)の2番目(下)という意味。,を抜いて(212)でもOK。
 x軸、y軸のラベルはxlabel()、ylabel()ではなく、set_xlabel()、set_ylabel()。 

スポンサーリンク
ふシゼン
タイトルとURLをコピーしました