「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
二次元の平面にグラフを描画するライブラリ
>pip install matplotlib
>>>import numpy as np >>>import matplotlib.pyplot as plt
>>>%matplotlib inline
線形単回帰している風のデータを生成する。
>>>np.random.seed(0) # 乱数生成器の状態を指定 >>>x1=np.random.normal(50,10,100) # 平均50 標準偏差10の正規分布データ100個 >>>y1=x1+np.random.normal(0,10,100) # 線形単回帰している風のxに対応するyの値 >>>x2 ...見ても解らん数字の羅列... >>>y2 ...見ても解らん数字の羅列...
>>>np.random.seed(0) # 乱数生成器の状態を指定 >>>x2=np.random.normal(30,10,100) # 平均30 標準偏差10の正規分布データ100個 >>>y2=2*x2+np.random.normal(0,10,100) # 線形単回帰している風のxに対応するyの値 >>>x2 ...見ても解らん数字の羅列... >>>y2 ...見ても解らん数字の羅列...
>>>plt.scatter(x,y) >>>plt.title('グラフのタイトル') >>>plt.xlabel('x軸のラベル') >>>plt.ylabel('y軸のラベル') >>>plt.xticks(np.arange(下限,上限,間隔)) >>>plt.yticks(np.arange(下限,上限,間隔)) >>>plt.grid() # グリッド線を表示 >>>plt.show()
color='blue'
marker='x'
label='data x'
>>>plt.legend(loc='upper right') # 凡例位置
>>>plt.scatter(x1,y1) >>>plt.show()
>>>plt.scatter(x1,y1) >>>plt.title('title') >>>plt.xlabel('xlabel') >>>plt.ylabel('ylabel') >>>plt.xticks(np.arange(0,100,10)) >>>plt.yticks(np.arange(0,100,10)) >>>plt.grid() # グリッド線を表示 >>>plt.show()
>>>plt.scatter(x1,y1,color='red',marker='x',label='data1') >>>plt.scatter(x2,y2,color='blue',marker='+',label='data2') >>>plt.title('title') >>>plt.xlabel('xlabel') >>>plt.ylabel('ylabel') >>>plt.legend(loc='upper right') # 凡例位置 >>>plt.xticks(np.arange(0,100,10)) >>>plt.yticks(np.arange(0,100,10)) >>>plt.grid() # グリッド線を表示 >>>plt.show()
コチラは関数なので、式(y=x^3+x^2x+x+1)からデータを生成する感じ。
>>>#x座標 >>>x=np.arange(-10,10,0.1) # -10 - +10まで0.1刻みの配列 >>>#x座標 >>>y=0.01*(x**3+x**2+x+1) # 三次関数:y=x^3+x^2x+x+1
グラフのプロット
>>>plt.plot(x,y) # グラフをプロットする >>>plt.show() # グラフを表示する
>>>plt.plot(x,y) # グラフをプロットする >>>plt.hlines([0], -10, 10, linestyles='dashed', color='gray') # x軸に平行な直線を表示 >>>plt.vlines([0], -1, 1, linestyles='dashed', color='gray') # y軸に平行な直線を表示 >>>plt.xlim([-5, 5]) # x軸方向の表示範囲を指定 >>>plt.ylim([-1, 1]) # y軸方向の表示範囲を指定 >>>plt.show() # グラフを表示する
sin関数からデータを生成する。
>>>#x座標 >>>x=np.arange(0,6,0.1) # 0 - 6まで0.1刻みの配列 >>>x array([ 0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. , 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2. , 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3. , 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 4. , 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9, 5. , 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9]) >>>#y座標 >>>y=np.sin(x) >>>y array([ 0. , 0.09983342, 0.19866933, 0.29552021, 0.38941834, 0.47942554, 0.56464247, 0.64421769, 0.71735609, 0.78332691, 0.84147098, 0.89120736, 0.93203909, 0.96355819, 0.98544973, 0.99749499, 0.9995736 , 0.99166481, 0.97384763, 0.94630009, 0.90929743, 0.86320937, 0.8084964 , 0.74570521, 0.67546318, 0.59847214, 0.51550137, 0.42737988, 0.33498815, 0.23924933, 0.14112001, 0.04158066, -0.05837414, -0.15774569, -0.2555411 , -0.35078323, -0.44252044, -0.52983614, -0.61185789, -0.68776616, -0.7568025 , -0.81827711, -0.87157577, -0.91616594, -0.95160207, -0.97753012, -0.993691 , -0.99992326, -0.99616461, -0.98245261, -0.95892427, -0.92581468, -0.88345466, -0.83226744, -0.77276449, -0.70554033, -0.63126664, -0.55068554, -0.46460218, -0.37387666])
>>>#グラフ描画 >>>plt.plot(x,y) [<matplotlib.lines.Line2D object at 0x0000028686ACB860>] >>>plt.show()
同様に、sin, cos関数からデータを生成する。
>>>#x座標 >>>x=np.arange(0,6,0.1) # 0 - 6まで0.1刻みの配列 >>>#y座標 >>>y1=np.sin(x) >>>y2=np.cos(x)
>>>#グラフ描画 >>> plt.plot(x,y1, label="sin") [<matplotlib.lines.Line2D object at 0x0000028689A08160>] >>> plt.plot(x,y2, linestyle="--", label="cos") [<matplotlib.lines.Line2D object at 0x0000028689A08358>] >>> plt.xlabel("x") <matplotlib.text.Text object at 0x0000028688BA0B38> >>> plt.ylabel("y") <matplotlib.text.Text object at 0x0000028689843EF0> >>> plt.title("sin & cos") <matplotlib.text.Text object at 0x00000286899D2780> >>> plt.legend() <matplotlib.legend.Legend object at 0x0000028684D235C0> >>> plt.show()
>>>from matplotlib.image import imread >>>img=imread('C:\Windows\Web\Wallpaper\Theme1\img1.jpg') >>>plt.imshow(img) <matplotlib.image.AxesImage object at 0x000002868AE42278> >>>plt.show()