前回の続き。
import matplotlib.pyplot as pltから始まって、
plt.show()でビューアが起動して図やグラフが描画されるが、
plt.plot()の中の-
、:
、--
、-.
をo
、^
、x
、*
などにすると線ではなく点(マーカー)のプロットになる。
^
、v
、>
、<
は向きの異なる▲。1
、2
、3
、4
は各々向きの異なるY。その他、,
が点、.
が小さい○。
ms(=markersize)でマーカーサイズ指定。
legend()の中のupper left
をlower
、right
に変えれば凡例の位置が変わる。デフォルトは右上(。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()
で
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()
x、yの値(データ)を.csvファイルなどから読み込む場合、pandasライブラリをimportして使う。
散布図の場合、plt.plot()の代わりにplt.scatter()が使える。
散布図の描画から統計の世界へ入り込んで、R言語と同じようなことができる。
比例/反比例
ふりだしに戻って、今度は片や増えて片や減るグラフを描画。
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に比例する」と言って直線に変えられる。
反比例は比例よりも手ごわい。
反比例だと思っていたら負の比例だった……。
反比例=トレードオフではなく、反比例はトレードオフの一部。
上図のAは負の比例。y=-kx。やがてy=0になる。
反比例はy=k/x(y∝-1x)で曲線。上図のC。y=0にならない。
曲線でも上図のBは別物。(x-10)2。
サブプロット subplot()を使うとビューアに複数の図・グラフが描かれる。
plt.subplot(2,1,2)
は、2行1列(上下)の2番目(下)という意味。,を抜いて(212)
でもOK。
x軸、y軸のラベルはxlabel()、ylabel()ではなく、set_xlabel()、set_ylabel()。