第十六回 プログラムでグラフを描く

プログラミング編

『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座標のデータを次のように、y1y2の複数用意することによって、複数の折れ線グラフを描くことができるぞ!実際に書いて実行してみるといいだろう。

ヒロト
ヒロト

なるほど、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つを用いて書きました!

マサト先生
マサト先生

素晴らしい!

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

ヒロト
ヒロト

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

マサト先生
マサト先生

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

ヒロト
ヒロト

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

コメント

タイトルとURLをコピーしました