Python グラフ描画用関数 新しいページはコチラ

提供: yonewiki
移動: 案内, 検索
(グラフ描画関係 書きかけの記事です。20191226~)
 
6行: 6行:
  
 
という記載が必要になります。
 
という記載が必要になります。
 +
 +
関数という表現をしていますがメソッドといった方がいいのかもしれません。でもここではあえて関数という日本語を使ってみようかなっておもいます。なるべく。そんな気分。てへぺろ?
 +
では記事を進めましょう。
 +
 +
 +
 話を進める、その前に…
 +
 +
 +
 この記事の発展的な記事が[[Python matplotlibで学ぶ…グラフ描画プログラム]]にもあります。これは[[Python matplotlibを使って学ぶ統計処理 正規分布]]のために書かれた記事です。
 +
 +
 +
 では、話を進めるとして、
 +
 +
 
<br />
 
<br />
 
=== '''グラフ描画関係サンプル''' ===
 
=== '''グラフ描画関係サンプル''' ===
42行: 56行:
 
=== '''グラフ描画関係''' 書きかけの記事です。20191226~===
 
=== '''グラフ描画関係''' 書きかけの記事です。20191226~===
  
*'''NumPyオブジェクト変数名.arange(引数1,引数2,引数3,引数4)'''
+
====*'''NumPyオブジェクト変数名.arange(引数1,引数2,引数3,引数4)'''====
 
:等差数列を生成するnumpy.arange関数です。
 
:等差数列を生成するnumpy.arange関数です。
 
:例
 
:例
130行: 144行:
  
  
*'''NumPyオブジェクト変数名.linspace(引数1, 引数2, 引数3, 引数4, 引数5, 引数6)
+
====*'''NumPyオブジェクト変数名.linspace(引数1, 引数2, 引数3, 引数4, 引数5, 引数6)====
 
:等差数列を生成するnumpy.linspace関数です。linespaceではありません。lineのようにnの後ろにeをつけるスペルミスや勘違いを起こしやすいかもしれませんが、そうではないので気を付けてください。linspaceですarange関数とよく似ている機能ですが引数が豊富で多機能です。
 
:等差数列を生成するnumpy.linspace関数です。linespaceではありません。lineのようにnの後ろにeをつけるスペルミスや勘違いを起こしやすいかもしれませんが、そうではないので気を付けてください。linspaceですarange関数とよく似ている機能ですが引数が豊富で多機能です。
  
138行: 152行:
  
 
例2
 
例2
  result = np.linspace(1, 100, 50, endpoint=False, retstep=True)
+
  result = np.linspace(1, 100, 50, endpoint=False, restep=True)
 
  array, step = result
 
  array, step = result
 
  print(step)
 
  print(step)
149行: 163行:
 
:引数6でデータ型の指定ができます 省略可能で省略時は引数2のデータ型から自動予測
 
:引数6でデータ型の指定ができます 省略可能で省略時は引数2のデータ型から自動予測
  
 
+
====*'''matplotlib.pyplotオブジェクト変数名.plot(引数1,引数2)'''====
*'''matplotlib.pyplotオブジェクト変数名.plot(引数1,引数2)'''
+
 
*'''matplotlib.axes._subplotsAxesSubplotオブジェクト変数名.plot(引数1,引数2)'''
 
*'''matplotlib.axes._subplotsAxesSubplotオブジェクト変数名.plot(引数1,引数2)'''
 
:グラフを生成するmatplotlib.pyplotオブジェクト変数名.plot関数です。
 
:グラフを生成するmatplotlib.pyplotオブジェクト変数名.plot関数です。
169行: 182行:
 
:通常引数には数列や配列など変化を伴う数値を保持する変数を指定します。
 
:通常引数には数列や配列など変化を伴う数値を保持する変数を指定します。
  
*'''matplotlib.axes._subplotsAxesSubplotオブジェクト変数名.set_xticks'''
+
====*'''matplotlib.axes._subplotsAxesSubplotオブジェクト変数名.set_xticks'''====
 
グラフのX軸目盛りを調整するmatplotlib.axes._subplotsAxesSubplotオブジェクト変数名.set_xticks関数です。
 
グラフのX軸目盛りを調整するmatplotlib.axes._subplotsAxesSubplotオブジェクト変数名.set_xticks関数です。
 
axis.set_xticks(引数1)
 
axis.set_xticks(引数1)
184行: 197行:
  
  
*'''matplotlib.axes._subplotsAxesSubplotオブジェクト変数名.set_yticks'''
+
====*'''matplotlib.axes._subplotsAxesSubplotオブジェクト変数名.set_yticks'''====
 
グラフのX軸目盛りを調整するmatplotlib.axes._subplotsAxesSubplotオブジェクト変数名.set_yticks関数です。
 
グラフのX軸目盛りを調整するmatplotlib.axes._subplotsAxesSubplotオブジェクト変数名.set_yticks関数です。
 
axis.set_yticks(引数1)
 
axis.set_yticks(引数1)
199行: 212行:
  
  
*'''matplot.pyplotオブジェクト.figure'''
+
====*'''matplot.pyplotオブジェクト.figure'''====
 
グラフを生成するmatplotlib.pyplotオブジェクト変数名.figure(figsize=(8, 6))
 
グラフを生成するmatplotlib.pyplotオブジェクト変数名.figure(figsize=(8, 6))
  
207行: 220行:
 
  fig = pl.figure(figsize=(8, 6))
 
  fig = pl.figure(figsize=(8, 6))
  
*'''matplotlib.figure.Figureオブジェクト変数名.subplots_adjust(hspace=xxx, wspace=xxx)'''
+
====*'''matplotlib.figure.Figureオブジェクト変数名.subplots_adjust(hspace=xxx, wspace=xxx)'''====
 
グラフを生成するmatplotlib.figure.Figureオブジェクト変数名.subplots_adjust(hspace=xxx, wspace=xxx)
 
グラフを生成するmatplotlib.figure.Figureオブジェクト変数名.subplots_adjust(hspace=xxx, wspace=xxx)
 
左右の余白は wspace、上下の余白は hspace で指定します。デフォルト値は上下間 左右間 共に0.2で、上下はデフォルトだとグラフタイトルと目盛りが重なりやすいようです。上下左右にグラフを並べない場合は特に意味は無い指定になります。
 
左右の余白は wspace、上下の余白は hspace で指定します。デフォルト値は上下間 左右間 共に0.2で、上下はデフォルトだとグラフタイトルと目盛りが重なりやすいようです。上下左右にグラフを並べない場合は特に意味は無い指定になります。
215行: 228行:
 
  fig.subplots_adjust(wspace=0.4, hspace0.4)
 
  fig.subplots_adjust(wspace=0.4, hspace0.4)
  
*'''matplotlib.figure.Figureオブジェクト変数名.add_subplot'''
+
====*'''matplotlib.figure.Figureオブジェクト変数名.add_subplot'''====
 
一つの描画エリアにグラフを複数を作成する関数 matplotlib.figure.Figureオブジェクト変数名.add_subplot(引数1,引数2,引数3)
 
一つの描画エリアにグラフを複数を作成する関数 matplotlib.figure.Figureオブジェクト変数名.add_subplot(引数1,引数2,引数3)
  
246行: 259行:
  
  
*'''matplotlib.axes._subplotsAxesSubplotオブジェクト変数名.set_xlabel('引数1')'''
+
====*'''matplotlib.axes._subplotsAxesSubplotオブジェクト変数名.set_xlabel('引数1')'''====
 
  matplotlib.axes._subplotsAxesSubplotオブジェクト変数名.set_xlabel('time(sec)')
 
  matplotlib.axes._subplotsAxesSubplotオブジェクト変数名.set_xlabel('time(sec)')
 
   
 
   
253行: 266行:
 
:関数を使う場合は引数の省略は不可で'''指定が必須'''
 
:関数を使う場合は引数の省略は不可で'''指定が必須'''
  
*'''matplotlib.axes._subplotsAxesSubplotオブジェクト変数名.set_ylabel('引数1')'''
+
====*'''matplotlib.axes._subplotsAxesSubplotオブジェクト変数名.set_ylabel('引数1')'''====
 
  matplotlib.axes._subplotsAxesSubplotオブジェクト変数名.set_ylabel('voltage(V)')
 
  matplotlib.axes._subplotsAxesSubplotオブジェクト変数名.set_ylabel('voltage(V)')
 
   
 
   
260行: 273行:
 
:関数を使う場合は引数の省略は不可で'''指定が必須'''
 
:関数を使う場合は引数の省略は不可で'''指定が必須'''
  
*'''matplotlib.axes._subplotsAxesSubplot.pyplotオブジェクト変数名.set_title('引数1')'''
+
====*'''matplotlib.axes._subplotsAxesSubplot.pyplotオブジェクト変数名.set_title('引数1')'''====
 
  matplotlib.axes._subplotsAxesSubplotオブジェクト変数名.set_title('time vs voltage plot')
 
  matplotlib.axes._subplotsAxesSubplotオブジェクト変数名.set_title('time vs voltage plot')
 
   
 
   
268行: 281行:
  
  
*'''matplotlib.axes._subplotsAxesSubplotオブジェクト変数名.grid('引数1')'''
+
====*'''matplotlib.axes._subplotsAxesSubplotオブジェクト変数名.grid('引数1','引数2','引数3','引数4',…)'''====
 +
グラフのグリッド主線と補助線の形状を変更する関数です。
 +
 +
ax.grid(b=True, which='major', axis='x', color=#ff0000)
 +
:引数1~全て省略可能な引数です。引数4からは公式には**kwargsと呼ばれています。*argsというのが引数というものを意味していますが、*がついているのはC言語のポインタ的なニュアンスと考えるとして、ホントか?それにkwがついているのはタプル型を意味するところのキーワードつまりはkeywordのことを意味しているのではないかとのことです。ようするにいろいろな引数を何とか=何とかの形式で沢山つけれるよっていうことだと思ってよいかと思います。何が言いたいかといいますと公式サイトとかで出てくる**kwargsっていう表現ににびびるなってことです。要するに**kwargsが使える関数は便利と思ってよいかと思います。使いこなすには覚えることも多いっちゃおおいけど。多機能で便利とポジティブに考えても良いんじゃないかな。
  
:
+
 
*'''matplotlib.pyplotオブジェクト変数名.show()'''
+
:引数1はb=Trueでグリッド表示するということb=Noneで非表示。
 +
:引数2はwhich='major'で主線に対する処理 which='minor'で補助線に対する処理 which='both'で両方に対する処理になります。
 +
:引数3はaxis='x'でx軸に対する処理 axis='y'でy軸に対する処理 axis='both'で両方の軸に対する処理になります。
 +
要するにデザイン関連の処理をまとめてやるか、めんどうだけど見やすさとかデザインのことだから個別に設定する必要があるからxはxだけyはyだけ主線と補助線とで個別にデザインを分けるとかで個別に設定をしなければならないとかまとめて統一したデザインができるとかで楽したいとかいろいろできるということです。そのこまごまとした設定を引数4以降で設定するということになります。わりかしたくさんの設定があります。理解するのも大変なくらい項目が沢山あります。
 +
 
 +
 
 +
ここでは項目の紹介だけにとどめます。ゆくゆくはひとつづつ紹介したいですね。
 +
{| class="wikitable"
 +
! 引数キーワード !! 引数 値
 +
|-
 +
| agg_filter || (m,n,3)float配列とdpi値を取り、(m,n,3)配列を返すフィルター関数
 +
|-
 +
| alpha || float浮動小数点数値
 +
|-
 +
| animated || ブール ex animated=True animated=False
 +
|-
 +
| antialiased またはAA || ブール ex antialiased=True antialiased=False
 +
|-
 +
| clip_box || Bbox 後述
 +
|-
 +
| clip_on || ブール ex clip_on=True clip_on=False
 +
|-
 +
| clip_path || [( Path, Transform )or Patch or 無し]画像の読み込み+その読み込み範囲の設定などの手順を伴う非常に難しい指定です。またべつの記事で説明が必要なほどのものだと思います。
 +
|-
 +
| color またはc || 色#000000~#ffffff ex color=#000000 etc
 +
|-
 +
| contains || 呼び出し可能
 +
|-
 +
| dash_capstyle || {'butt', 'round', 'projecting'}
 +
|-
 +
| dash_joinstyle || {'miter', 'round', 'bevel'}
 +
|-
 +
| dashes || ダッシュシーケンスを設定します。
 +
ダッシュ シーケンスは、点のダッシュとスペースの長さを表す偶数長の浮動小数点数のシーケンスです。
 +
たとえば、(5, 2, 1, 2) は、2 ポイントスペースで区切られた 5 ポイントと 1 ポイントのダッシュのシーケンスを表します。
 +
|-
 +
| drawstyle またはds || {'default', 'steps', 'steps-pre', 'steps-mid', 'steps-post'}, デフォルト: 'default'
 +
|-
 +
| figure || Figure
 +
|-
 +
| fillstyle || {'full', 'left', 'right', 'bottom', 'top', 'none'}
 +
|-
 +
| gid || str 文字列
 +
|-
 +
| in_layout || ブール in_layout=True in_layout=False
 +
|-
 +
| label || 対象
 +
|-
 +
| linestyle またはls || {'-', '-', '-。', ':', '',(offset、on-off-seq),...}
 +
|-
 +
| linewidth またはlw || float浮動小数点数値
 +
|-
 +
| marker || マーカー 一覧は後述
 +
|-
 +
| markeredgecolor またはmec || 色#000000~#ffffff ex color=#000000
 +
|-
 +
| markeredgewidth またはmew || float浮動小数点数値
 +
|-
 +
| markerfacecolor またはmfc || 色#000000~#ffffff ex color=#000000
 +
|-
 +
| markerfacecoloralt またはmfcalt || 色#000000~#ffffff ex color=#000000
 +
|-
 +
| markersize またはms || float浮動小数点数値
 +
|-
 +
| markevery || Noneまたはintまたは(int、int)またはsliceまたはList [int]またはfloatまたは(float、float)
 +
|-
 +
| path_effects || AbstractPathEffect
 +
|-
 +
| picker || floatまたはcallable [[Artist、Event]、Tuple [bool、dict]]
 +
|-
 +
| pickradius || float浮動小数点数値
 +
|-
 +
| rasterized || boolまたはNone ex rasterized=True rasterized=False rasterized=None
 +
|-
 +
| sketch_params || (スケール:float、長さ:float、ランダムネス:float)
 +
|-
 +
| snap || boolまたはNone ex snap=True snap=False snap=None
 +
|-
 +
| solid_capstyle || {'butt', 'round', 'projecting'}
 +
|-
 +
| solid_joinstyle || {'miter', 'round', 'bevel'}
 +
|-
 +
| transform || Transform
 +
|-
 +
| url || str 文字列
 +
|-
 +
| visible || ブール ex visible=True visible=False
 +
|-
 +
| xdata || 1次元配列
 +
|-
 +
| ydata || 1次元配列
 +
|-
 +
| zorder || float浮動小数点数値
 +
|}
 +
:BBoxの例
 +
bbox=[0,0,1,1]
 +
 
 +
:marker = {'.': 'point', ',': 'pixel', 'o': 'circle', 'v': 'triangle_down', '^': 'triangle_up', '<': 'triangle_left', '>': 'triangle_right', '1': 'tri_down', '2': 'tri_up', '3': 'tri_left', '4': 'tri_right', '8': 'octagon', 's': 'square', 'p': 'pentagon', '*': 'star', 'h': 'hexagon1', 'H': 'hexagon2', '+': 'plus', 'x': 'x', 'D': 'diamond', 'd': 'thin_diamond', '|': 'vline', '_': 'hline', 'P': 'plus_filled', 'X': 'x_filled', 0: 'tickleft', 1: 'tickright', 2: 'tickup', 3: 'tickdown', 4: 'caretleft', 5: 'caretright', 6: 'caretup', 7: 'caretdown', 8: 'caretleftbase', 9: 'caretrightbase', 10: 'caretupbase', 11: 'caretdownbase', 'None': 'nothing', None: 'nothing', ' ': 'nothing', '': 'nothing'}
 +
 
 +
====*'''matplotlib.pyplotオブジェクト変数名.show()'''====
 +
複数のグラフの作成も纏めて生成できるmatplotlibによるグラフ描画の下準備の手順が存在することがここまでの手順でわかったと思いますが、最後にこの関数を実行することでここまでじゅんびしてきたものが実際に描画されます。上手くいかない場合は、ここまでやってきた準備にまずかった部分があったということになります。このような実際に描いてみるまで、上手くいっているかよくわからないという仕組みが使いやすいとは思えないですが、使いこなせたら凄いのかもしれないですね。
 +
 
 +
import matplotlib.pyplot as plt
 +
 +
plt.show()
  
 
=== '''算術関数関係''' ===
 
=== '''算術関数関係''' ===
*'''NumPyオブジェクト変数名.pi'''
+
====*'''NumPyオブジェクト変数名.pi'''====
 
:円周率をあらわす予約語です。およそ3.14159265359として計算されるようになっています。
 
:円周率をあらわす予約語です。およそ3.14159265359として計算されるようになっています。
 
:円周は直径×円周率で求めることができます。2*半径*piです。面積は半径×半径×円周率で求めることが出来ます。
 
:円周は直径×円周率で求めることができます。2*半径*piです。面積は半径×半径×円周率で求めることが出来ます。
 
:その他いろいろな場面で円周率を利用することで問題を解決するのに役立てることが出来ます。
 
:その他いろいろな場面で円周率を利用することで問題を解決するのに役立てることが出来ます。
  
*'''NumPyオブジェクト変数名.sin(引数1)'''
+
====*'''NumPyオブジェクト変数名.sin(引数1)'''====
 
:グラフ描画でよく使う算術関数です。
 
:グラフ描画でよく使う算術関数です。
 
:例 NumPyオブジェクト変数名.sin(2*pi*v)
 
:例 NumPyオブジェクト変数名.sin(2*pi*v)
285行: 406行:
 
:詳しくは[http://www.yo-net.jp/yonewiki/index.php?title=JavaScript_%E6%95%B0%E5%80%A4%E6%BC%94%E7%AE%97#.E4.B8.89.E8.A7.92.E9.96.A2.E6.95.B0_sin.2Fcos.2Ftan.2Fasin.2Facos.2Fatan.2Fatan2 こちら]の解説を確認してみてください。
 
:詳しくは[http://www.yo-net.jp/yonewiki/index.php?title=JavaScript_%E6%95%B0%E5%80%A4%E6%BC%94%E7%AE%97#.E4.B8.89.E8.A7.92.E9.96.A2.E6.95.B0_sin.2Fcos.2Ftan.2Fasin.2Facos.2Fatan.2Fatan2 こちら]の解説を確認してみてください。
  
*'''NumPyオブジェクト変数名.cos(引数1)'''
+
====*'''NumPyオブジェクト変数名.cos(引数1)'''====
 
:グラフ描画でよく使う算術関数です。
 
:グラフ描画でよく使う算術関数です。
 
:例 NumPyオブジェクト変数名.cos(2*pi*v)
 
:例 NumPyオブジェクト変数名.cos(2*pi*v)
291行: 412行:
 
:詳しくは[http://www.yo-net.jp/yonewiki/index.php?title=JavaScript_%E6%95%B0%E5%80%A4%E6%BC%94%E7%AE%97#.E4.B8.89.E8.A7.92.E9.96.A2.E6.95.B0_sin.2Fcos.2Ftan.2Fasin.2Facos.2Fatan.2Fatan2 こちら]の解説を確認してみてください。
 
:詳しくは[http://www.yo-net.jp/yonewiki/index.php?title=JavaScript_%E6%95%B0%E5%80%A4%E6%BC%94%E7%AE%97#.E4.B8.89.E8.A7.92.E9.96.A2.E6.95.B0_sin.2Fcos.2Ftan.2Fasin.2Facos.2Fatan.2Fatan2 こちら]の解説を確認してみてください。
  
*'''NumPyオブジェクト変数名.tan(引数1)'''
+
====*'''NumPyオブジェクト変数名.tan(引数1)'''====
 
:グラフ描画でよく使う算術関数です。
 
:グラフ描画でよく使う算術関数です。
 
:例 NumPyオブジェクト変数名.tan(2*pi*v)
 
:例 NumPyオブジェクト変数名.tan(2*pi*v)
298行: 419行:
  
  
 +
==='''関連記事'''===
 +
[[Python matplotlibで学ぶ…グラフ描画プログラム]]
 +
 +
 +
 
 
[[Python]]の記事へ戻る
 
[[Python]]の記事へ戻る

2020年11月9日 (月) 00:00時点における最新版



個人用ツール
名前空間

変種
操作
案内
ツールボックス