よちよちpython

独習 python/Qpython/Pydroid3/termux/Linux

点と線-matplotlib

matplotlibで簡単なグラフ作成をしてみる。

目次




実行環境


Androidスマホ
termux
Python3.7
JupyterNotebook

点をプロット


下のコードのplt.plot()3つ目の引数を'.'にすると点でのプロットになる。
その他に●や▲や■、×、★など色々用意されている。

%matplotlib inline
import matplotlib.pyplot as plt

x = 1
y = 2 

plt.plot(x,y,'.')
[<matplotlib.lines.Line2D at 0x7607472d90>]

20191103194911

 



点のサイズ(markersize)を変更


plot()の引数にmarkersize=数字を指定すると点のサイズが変更できる。

%matplotlib inline
import matplotlib.pyplot as plt

x = 2
y = 5

plt.plot(x,y,'*',markersize=20)
[<matplotlib.lines.Line2D at 0x7603a74e90>]

20191103194932

 



3点を★でプロット


%matplotlib inline
import matplotlib.pyplot as plt

x = (1,2,3)
y = (4,5,2)

plt.plot(x,y,'*',markersize=20)
[<matplotlib.lines.Line2D at 0x760355cf90>]

20191103194955

 



点(marker)を指定しなければ折れ線


plt.plot()の引数で指定していた'.'を外すと次のようなグラフになる。

%matplotlib inline
import matplotlib.pyplot as plt

x = (1,2,3)
y = (8,4,7)

plt.plot(x,y)
[<matplotlib.lines.Line2D at 0x7607146f10>]

20191103195018

 



点と線で繋ぐ


'.'marker='.'に変えると線で繋がれる。

%matplotlib inline
import matplotlib.pyplot as plt

x = (1,2,3,4,5)
y = (4,5,2,17,38)

plt.plot(x,y,marker='.',markersize=20)
[<matplotlib.lines.Line2D at 0x7603448ad0>]

20191103195041

 



その他 marker参考ページ


こちらのサイトは対応表でまとめてあります。

https://pythondatascience.plavox.info/matplotlib/%E3%83%9E%E3%83%BC%E3%82%AB%E3%83%BC%E3%81%AE%E5%90%8D%E5%89%8D

 



x,yの値をrangeで指定


x,yの値の個数が合わないとエラーになる。

%matplotlib inline
import matplotlib.pyplot as plt

x = range(0,11)
y = range(0,21,2) 

plt.plot(x,y,'.',20)
 <matplotlib.lines.Line2D at 0x760461a2d0>]

20191103195104

 



値を文字で指定


月別の売上をグラフにしたい時などに使える。

matplotlibは標準で日本語表示出来なくて文字化けする。別にソフトをインストールする必要がある。
OS別にインストール方法がまとめてあります。
[https://qiita.com/yniji/items/3fac25c2ffa316990d0c:embed]

%matplotlib inline
import matplotlib.pyplot as plt

x = ("jan","feb","mar","apr","may")
y = (8,4,7,11,95)

plt.plot(x,y)
[<matplotlib.lines.Line2D at 0x76071a0f90>]

20191103195127

 



棒グラフに変える


plot()bar()に変えると棒グラフに変えられる。

%matplotlib inline
import matplotlib.pyplot as plt

x = ("jan","feb","mar","apr","may")
y = (8,4,7,11,95)

plt.bar(x,y)
<BarContainer object of 5 artists>

20191103195154

 



文字でプロット


marker='$文字列$'とすると点が文字に変えられる。
marker= を外すとエラーになるので注意。 こちらも日本語対策なしだと文字化けする。

%matplotlib inline
import matplotlib.pyplot as plt

x = (1,2,3)
y = (4,5,2)

plt.plot(x,y,marker='$Point$',markersize=30)
[<matplotlib.lines.Line2D at 0x76040f6110>]

20191103202117

 



ランダムにプロットしてみる


グラフ作成というより、xとyのリストの作り方の問題。

%matplotlib inline
import matplotlib.pyplot as plt
import random

x = list(random.randrange(i) for i in range(1,50))
y = list(random.randrange(j) for j in range(1,50)) 

plt.plot(x,y,'.')
[<matplotlib.lines.Line2D at 0x7603a8dad0>]

f:id:chayarokurokuro:20191103195257j:plain



おわりに


matplotlibを使うサンプルコードには大抵numpyがimportしてある。
ここまで書いてきたコードはnumpyをあえて使っていない。
「なぜnumpyが使われるのか。」が疑問としてあった。



リストyをリストxの関数としてy=2*xのような書き方をしようとすると、通常のリストやタプルだけでは難しい、というかエラーになる。
ところがnumpyを使うとスカラーの変数のような書き方でいける。numpyは配列や行列の計算をする場合に強力な武器になるといいます。Pythonが機械・深層学習において他言語に勝っているのはこのnumpyの功績が非常に大きいのだとPyConJP2019のYouTube動画で東大の先生が言っておりました。

そういった訳でnumpy学習の動機付けの為の基礎的グラフ作成エントリーでした。