Python matplotlibで学ぶ…グラフ描画プログラム 新しいページはコチラ
提供: yonewiki
(→60行目) |
(→22行目/23行目) |
||
1行: | 1行: | ||
== '''概要''' == | == '''概要''' == | ||
+ | [[Python matplotlibを使って学ぶ統計処理 正規分布]]へ戻る | ||
+ | |||
+ | |||
pythonによるグラフ描画プログラムを以下に示します。 | pythonによるグラフ描画プログラムを以下に示します。 | ||
231行: | 234行: | ||
:::::[https://matplotlib.org/examples/color/named_colors.html https://matplotlib.org/examples/color/named_colors.html] | :::::[https://matplotlib.org/examples/color/named_colors.html https://matplotlib.org/examples/color/named_colors.html] | ||
:::*16進数表記 | :::*16進数表記 | ||
− | :::::'#xxxxxx'のxxに00~FFの値を適用してR(Red) G(Green) B(Blue) | + | :::::'#xxxxxx'のxxに00~FFの値を適用してR(Red) G(Green) B(Blue)に対応し、すべての値が大きいほど黒く、全ての値が小さいほど白くなる表記です。 |
:::*KRGB表記 | :::*KRGB表記 | ||
::::[x.0,x.0,x.0,x.0]と配列にK白黒度合いを0~1.0の小数で指定します。RGBも同様です。 | ::::[x.0,x.0,x.0,x.0]と配列にK白黒度合いを0~1.0の小数で指定します。RGBも同様です。 | ||
242行: | 245行: | ||
*labelsize | *labelsize | ||
::数値でラベルの大きさを設定します。主目盛りに対して表示される数字の大きさです。 | ::数値でラベルの大きさを設定します。主目盛りに対して表示される数字の大きさです。 | ||
− | |||
=== '''26行目~29行目''' === | === '''26行目~29行目''' === | ||
636行: | 638行: | ||
</syntaxhighlight2> | </syntaxhighlight2> | ||
グリッド線の表示を有効化しています。 | グリッド線の表示を有効化しています。 | ||
+ | |||
+ | |||
+ | === '''66行目''' === | ||
+ | <syntaxhighlight2 lang="python"> | ||
+ | ax.set_position([0.2, 0.2, 0.7, 0.6]) | ||
+ | </syntaxhighlight2> | ||
+ | グラフの枠の位置を設定しています。引数には4要素の配列を指定します。[枠の左辺, 枠の下辺, 枠の横幅, 枠の高さ]のようにします。 | ||
+ | |||
+ | |||
+ | === '''69行目~71行目''' === | ||
+ | <syntaxhighlight2 lang="python"> | ||
+ | ax.set_xlabel('x [-]', fontsize = 6, fontdict={'family': 'Meiryo'}) | ||
+ | </syntaxhighlight2> | ||
+ | グラフの各種ラベルの文字の設定をします。 | ||
+ | :*set_xlabel x軸の下のラベル | ||
+ | :*set_ylabel y軸の横のラベル | ||
+ | :*set_title グラフの上のタイトルのラベル | ||
+ | :それぞれの関数の引数で書式の設定ができます。 | ||
+ | ::*第一引数の文字列で表示した文字を入力します。日本語を設定する場合は、fontdictや随分手前で紹介したfontpropertiesで日本語フォントファミリーを設定する必要があります。 | ||
+ | ::*fontsize 文字の大きさを数値で設定します。 | ||
+ | ::*fontdict フォントの設定を連想配列で['family':'Meiryo',…]とすることでMeiryoフォントを指定できます。フォント指定をするfamilyキーの他にfontweightで文字の太字設定やsizeあるいはfontsizeで文字の大きさcolorで色の設定ができます。"fontproperties"キーへの値でフォント設定をだいぶ前で説明したfont_managerオブジェクトの変数を値にしたような設定も出来ます。 | ||
+ | |||
+ | |||
+ | === '''74行目~91行目''' === | ||
+ | いよいよプロット部分の説明です。ここでプロットして連続する値としてプロット値を実線でつなぐグラフを描画しています。ここではsigmaを可変できるようにされていて76行目 while文をつかっています。実際のプログラムではsigma = 1で始まって、判定式はsigma < 2で終了なのでsigmaが1のときの1回の処理になっています。whileの繰り返し範囲はpythonの制御構造ではインデントがそろっている範囲が繰り返し範囲になります。xの連続する値の配列に対してyの配列を生成するのが81行目の以下の部分です。 | ||
+ | <syntaxhighlight2 lang="python"> | ||
+ | y = 1 / (np.sqrt(2 * np.pi) * sigma) * np.power(math.e ,-1 / (2 * np.power(sigma, 2)) * np.power((x - u), 2)) | ||
+ | </syntaxhighlight2> | ||
+ | xとyの配列の大きさは同じで、上記の式で一括してすべてのx配列値に対する結果がyの配列として生成されます。 | ||
+ | |||
+ | |||
+ | そして以下のような87行目でプロット処理がされます。 | ||
+ | <syntaxhighlight2 lang="python"> | ||
+ | ax.plot(x, y, linestyle='solid', linewidth = 0.8, zorder = 15 + sigma) | ||
+ | </syntaxhighlight2> | ||
+ | 上記ではlinestyleは実線、linewidthは0.8と定義されています。 | ||
+ | |||
+ | |||
+ | ここまでの各種関数の全てに言えますが、zorder=整数値で重なりを制御できます。このように設定していれば、繰り返すたびにzorder値が大きくなるため上からかぶさるように描画されます。 | ||
+ | |||
+ | |||
+ | 84行目でグラフプロットとしては少し複雑な処理を入れています。y軸と関数とが囲む領域に斜線のハッチング(線塗り)がされるように設定しています。 | ||
+ | <syntaxhighlight2 lang="python"> | ||
+ | plt.fill_between(x, y, facecolor="none", alpha=0.8, edgecolor='#1f77b4', hatch="//////", zorder = 15) | ||
+ | </syntaxhighlight2> | ||
+ | |||
+ | |||
+ | pltのfill_between関数でxとyのプロット値とy軸の間を塗る場合は、最初の2つの引数で x, y を与えます。以降は塗りに関する設定です。これまでにも使われたようなキーワードですので、理解はしやすいと思いますので、説明は省略します。 | ||
+ | |||
+ | |||
+ | これでグラフを描くことができました。 | ||
+ | |||
+ | |||
+ | === '''94行目''' === | ||
+ | <syntaxhighlight2 lang="python"> | ||
+ | plt.show() | ||
+ | </syntaxhighlight2> | ||
+ | |||
+ | 上記の命令で標準出力にたいして、これまでの描画処理結果をディスプレイに表示することが出来ます。 | ||
+ | |||
+ | |||
+ | plt.savefig("name.png", bbox_inches = 'tight', pad_inches = 0) | ||
+ | |||
+ | |||
+ | ちなみに上記のようにすると、png形式画像として出力できます。 | ||
+ | |||
+ | |||
+ | [[Python matplotlibを使って学ぶ統計処理 正規分布]]へ戻る |