『Matplotlib.pyplot』について

やあ、こんにちは。今日は『グラフの作成』についてやっていこう。

はい、よろしくお願いします。

今回は『matplotlib.pyplot』という、あらかじめ組み込まれたプログラムを用いてグラフを描いていく。これを使うためには、プログラムの1行目に『import matplotlib.pyplot as plt』と書く必要がある。

第10回で『タートルグラフィックス』を使った時も同じことをしましたね。つまり、matplotlib.pyplot を『plt』として呼び出すということですね!

そういうことだ。pltを呼び出すことによって、様々な機能が使えるようになるぞ。はじめに『plt.scatter関数』を用いて散布図を描こう。下の画面を見てほしい。


上のプログラムでは、『plt.scatter関数』を用いて点を3個表示している。
『plt.scatter( x , y , c=’ 色 ‘ )』という」形をしているが、xがx座標、yがy座標、c=’色’で点の色を指定できると言うわけだ。そして、6行目の plt.show() で画面に表示することになる。

なるほど、cは『color』の頭文字だったのですね!

うむ、それから今回のプログラムを実行するときは全て『サーバで実行』することに注意してほしい。どういうことか覚えているかな?

はい、ビットアロー画面上部にある『実行』をクリックすると、『サーバで実行』が選択できるのでした。

そういうことだ。では次に画面に直線を描いてみよう。

直線や曲線を描く

for文を使うと、点を少しずつ変化させて直線や曲線を描くことができる。次のプログラムを見てほしい。


上のプログラムでは、for文によって変数xに0から49までの値を代入しながら、y=x を満たす点の座標をplt.scatter関数に代入している。このプログラムを実行するとどうなるか考えてほしい。

はい、これは『y=x』という直線が描かれると思います。厳密には50個の点が描かれるということですが。実際に実行して確認してみます。今回は『file40』から始めます。


うむ、良さそうだな。では、上のプログラムを利用して『y=-2x+5』の直線を描くプログラムを書いてみて欲しい。ただし、直線の色は青とする。

はい、これはこことここを書き換えるだけで良さそうですね!


できました!4行目の直線の式と、5行目の色をblueに書き換えただけなので簡単でした!

うむ、そこに気づいたのならもう大丈夫だ。そうすると、2次関数
$$y=x^{2}-2x+3$$
のグラフもすぐ描けるだろう?

はい、これも4行目を書き換えるだけで行けると思います。これも同じfile40に書きます。


三角関数のグラフ

次に、三角関数のグラフを描いてみよう。これはこれまでのように簡単にはいかないぞ。まず、『math』というプログラムを呼び出す必要がある。次の画面を見てほしい。


上のプログラムでは、2行目で新たに『math』を呼び出している。そして、5行目の『y=math.sin(x*math.pi / 180)』は数式で、
$$y=\sin (\frac{\pi x}{180})$$
を意味するプログラムだ。サイン関数や円周率の \(\pi\) を使うときは先頭に『math.』をつけて『math.sin(・・・)』や『math.pi』のように表すことに注意してほしい。

はい、角度としては『ラジアン』を使っているのですね!

そういうことだ。上のプログラムを利用して、新しい『file41』に『y=cosx』のグラフを描いてごらん。

はい、これはここをこう書き換えるだけですね!

折れ線グラフを描く

では、最後に折れ線グラフを描いてみよう。まずは下の画面を見てほしい。


上のプログラムでは、与えられたデータのリスト x と y をもとに折れ線グラフを描いている。このように点のデータは、リストとして渡す必要があり、5行目の『plt.plot関数』で折れ線を表示できるのだ。

おーこれは便利ですね!x と y のデータは何でもいい訳ですね!

うむ、y座標のデータを次のように、y1とy2の複数用意することによって、複数の折れ線グラフを描くことができるぞ!実際に書いて実行してみるといいだろう。


なるほど、y のデータリストだけを増やしていけば同じ画面上に表示できるのですね!

ランダム関数の視覚化

うむ、では最後に一つ問題を出すぞ!
x=[1 , 2 ,・・・, 100] とする。ランダムに1から100までの100個の整数を入れたリスト y を作り、折れ線グラフを描いてみよう。

まず、x のリストを作るのが大変ですね。これは、for文とappend関数を使ってリストx に1から100まで追加していけば良さそうですね!そして確か『random.randint(1,100)』で1から100までの整数がランダムに1つ作られます。これを、やはりfor文とappend関数を使ってリストy に追加していくという方針でやってみよう!新しくfile43に書きます。


できました!
for文、random関数、append関数の3つを用いて書きました!

素晴らしい!
ランダム性を実際に目で見ることができたわけだ。どうだ?これがランダムというものだ。

はい、全く規則性がないですね!

さて、今日はここまでにしよう。次回は『関数を定義する』ことについて学ぼう。では今日もお疲れさん。

はい、ありがとうございました。

コメント