プログラミング入門II
2025.07.09
matplotlib その2

Back to index page



  1. 本日の作業内容

  2. 前回の復習

    matplotlib を使用してデータや関数のグラフ化を体験しました.測定データを自動で保存して,その結果を同時にグラフ化するなどの一連の動作は,研究においてしばしば利用されます.今後もみなさんも活用できそうなら試してみてください.

  3. matplotlib

    今回は matplotlib を使用してヒストグラムも簡単に作れることを確認したり,左右のY軸の値を変えたりして,さらに便利なグラフの作成も体験します.

    1. ダブルY軸のグラフ
    2. 測定値の絶対値が大きく異なるものの同時に表示させてその関連を視覚化したいことはよくあります.そのために2つ目のY軸を作る方法を知っておくことも大事です.以下のように ax2 を定義してダブルY軸のグラフが作れます.

      from random import randint as randi
      import matplotlib.pyplot as plt
      
      large = [randi(1000, 2000) for _ in range(10)]
      small = [randi(10, 99) for _ in range(10)]
      x = [i for i in range(1, 11)]
      
      fig = plt.figure()
      ax1 = fig.add_subplot(1, 1, 1)
      ax2 = ax1.twinx()
      
      ax1.set_ylim(0, 250)
      ax2.set_ylim(0, 2500)
      
      ax1.set_ylabel('small numbers')
      ax2.set_ylabel('large numbers')
      
      label1 = 'small numbers'
      label2 = 'large numbers'
      
      ax1.plot(x, small, 'o-', color='r', label=label1)
      ax2.plot(x, large, 'o--', color='g', label=label1)
      
      handler1, label1 = ax1.get_legend_handles_labels()
      handler2, label2 = ax2.get_legend_handles_labels()
      
      ax1.legend(handler1 + handler2, label1 + label2, loc='upper right')
      
      plt.show()
      

    3. ヒストグラム
    4. 度数分布を取ってデータの分布を確認したい事例も時によって生じます.EXCELでも度数分布を作ることは可能ですが,結構面倒です.ここでは matplotlib を使って度数分布のグラフを作ってみましょう.

      正規分布に従う乱数(実数)を使って発生させたリストの度数分布を確認します.平均値を 50 とし,標準偏差を 10 とする乱数100個の度数分布を作ってみましょう.なお,棒の本数は10本としています.

      from random import *
      import matplotlib.pyplot as plt
      
      lst = [gauss(50, 10) for _ in range(100)]
      
      fig, ax = plt.subplots()
      
      ax.hist(lst, bins=10)
      ax.set_xlabel('Random numbers')
      ax.set_ylabel('Frequency')
      
      plt.show()
      

  4. 演習

    今回の演習問題です.

  5. 宿題

    いつものようにMoodleを使用して行います.公開は本日の18:00です.締め切りは7月14日(月)の15:00です.

  6. 次回の予習

    次回も Matplotlib を使用してグラフ描画を行いますが,簡単なシミュレーションを体験してみましょう.次回のWebテキストをよく見ておいてください.


目次ページに戻る