Dr. Berendsen の Python プログラム アップデート

(4) 対数グラフとエラーバー

(3)へ    (5)へ    Workbench へ

Updating Python Code 2.5 (p.178) for Figure 2.7 (p.18)
<コード code2.5.py>

濃度の時間変化を対数グラフで表現し、誤差も加えます。 Berendsen氏の旧コードを下に記します。

  1. from plotsvg import *
  2. time = [20., 40., 60., 80., 100., 120., 140., 160., 180.]
  3. conc = [75., 43., 26., 16., 10., 5., 3.5, 1.8, 1.6]
  4. err = [4., 3., 3., 3., 2., 2., 1., 1., 1.]
  5. f = Figure()
  6. f.frame([0,200],[1,100],xlabel='time <i> t</i>/s', ylabel='concentration <i>c</i>mmol L< sup >-1</sup>', yscale='log')
  7. f.plotp([time,conc],ybars=err)
  8. f.show()
plotsvg が認識されないので改訂版 code2.5.pyを作成しました。右図はその出力です。 イタリック体と上付きの指定が、plotsvg では HTML流なのに対し、matplotlib では TEX 流になっています。
<改訂版コードからのグラフィックス出力>

<コード code2.5file.py>

実験データが得られるたびにプログラムを作成するのは非現実的です。それよりは、実験データをファイル化し、それを同一のプログラムで処理するほうが賢明です。 そこで上のデータをcsvファイル(中身)とし、 改訂版 code2.5file.pyを作成しました。結果は右の図と同じなので省略します。

csv ファイルの1行目は見出しです。3項目ありますので実験データの項目数も3となります。 しかし4列目にmemoがあるので、Excel は項目数が4であると誤解します。その誤解を取り除くコードが加わっています (ファイルに実験データ意外の情報が含まれていると、一般にプログラムは長くなります)。

<コード code2.5file.pyの特徴>

入力数が予想より多くなることがあるから、十分な大きさの配列を用意しておけというのがFortran 以来のプログラミング作法でしたが、このプログラムでは入力数とぴったりの配列を自動的に生成します。 新しいデータが現れるたびに append で配列要素を追加するのです。plot の引数に配列サイズがなくてもよいわけです。発想の転換が必要だと思いました。

11-4-2022, S. Hayashi