活動報告

新着記事

カテゴリー

キーワード検索

2022.10/12 Pythonにおけるグラフ描画

先月から今月にかけてPythonを使用したパーコレーション転移のシミュレーションプログラムを題材にセミナーを開催している。


エンジン部分のみ配布して、そのプログラムをいろいろ作り直して、Pythonに慣れていただくという指導方法である。


これは当方がC言語のプログラミングスキルを習得した方法である。すなわち雑誌に載っていたプログラムをいろいろ変更を加えながらポインターや構造体に慣れていった。


プログラミング教育が既に始まったが、プログラミングスキルの向上には、その考え方も含め慣れが重要である。頭で考えてもスキルは身につかない。


さて、そのエンジン部分に、値を対数に変換してグラフ描画するプログラムを加えたいときにどうするのか。対数関数を利用するには、mathライブラリーを用いるので、import mathあるいはfrom math import *文を書く必要がある。


前者では、math.log(x,y)とする必要があり、後者ではlog(x,y)と記述できることは、セミナーで解説した。またグラフモジュールにについてもimport matplotlib.pyplot as pltとインポートすることを忘れずに行う。


エンジン部分には、対数変換のために4行(注)ほど書き加えた後、下記のようにグラフ部分を書き加えるだけである。#部分は説明文だが、付け加えるコード部分はたったの5行である。


このようにPythonを習得するとエクセルよりも簡単に描画が可能となる。パーコレーションのシミュレーションを複数回行い、その平均をとりたい場合も、配列を使うと簡単である。


しかし、計算結果を残しておきたいことも考慮して、セミナーではCSVファイルへの保存方法を解説している。下記プログラミングが不慣れであれば、ファイル保存した後、エクセルでデータ整理すればよい。


やや面倒かもしれないが、Pythonに慣れるまで、すべてのプロセスをPython で行うのではなく、部分的にエクセルを組み合わせて練習すると、そのうちエクセルを使わなくなるかもしれない。


#(注)グラフ描画には配列で計算結果を渡す必要があるので配列を定義する必要がある。
#result array
#値を格納するためのリストを宣言
#////
result_volume = [ ]
result_volt = [ ]
#<中略>
 result_volume.append(v_flaction)
 result_volt.append(log(v_res,10))

#グラフのタイトル
plt.title("v_flaction vs v_res")
#X軸とY軸のラベル
#日本語表示をする場合は必ずフォントを指定すること
plt.xlabel("体積分率",fontname="MS Gothic")
plt.ylabel("抵抗",fontname="MS Gothic")
#////////
#plt.xlim(min(result_volume)-0.1,max(result_volume)+0.1)
#plt.ylim(min(result_volt)-1,max(result_volt)+1)
#必要であればグラフの描画範囲を指定する
#////////
#plt.plot(X軸,Y軸)  配列の参照渡しである。
plt.plot(result_volume,result_volt)
#plt.show()でグラフ出力
plt.show()

カテゴリー : 一般

pagetop