初心者向けプログラミング講座
第7回: データの可視化(グラフ作成)

講座の概要については以下からご覧ください。
目的
この回では、測定データを「可視化」する技術を学びます。計測データの理解を深めたり、相手に結果を説明したりするためには、グラフでの表現が非常に役立ちます。Pythonの「matplotlibライブラリ」を使用して折れ線グラフや散布図、棒グラフなどを作成する基本的手法を学び、測定データを見やすくする技術を習得します。
学習内容
- matplotlibの概要と基本操作
- 折れ線グラフの作成
- 散布図の作成
- データのグラフタイトルやラベルの追加
- 複数データのグラフでの表現
- 実践プログラム例
- 演習問題
1. matplotlibの概要と基本操作
(1) matplotlibとは?
matplotlibは、Pythonでグラフを描画するためのライブラリで、数値データを視覚的に表現するための多彩な機能を提供します。特にデータの分析や報告資料を作成するときに便利です。
(2) matplotlibのインストール
まず、matplotlibをインストールしましょう。(すでにインストールされている場合は不要です)
pip install matplotlib
(3) 基本的な使い方構造
matplotlibには主に次のような使用方法があります:
モジュールインポート:
import matplotlib.pyplot as plt
図の生成と表示:
データを用意する
グラフを作る
ラベルやタイトルを追加する
グラフを表示する(plt.show())
2. 折れ線グラフの作成
測定データを時系列データとして視覚化するには、折れ線グラフが便利です。
(1) 基本構造
以下は、基本的な折れ線グラフの作成例です。
import matplotlib.pyplot as plt
# データ
x = [1, 2, 3, 4, 5] # 横軸(例として時間)
y = [2.1, 2.3, 2.2, 2.5, 2.4] # 縦軸(例として測定値)
# グラフ作成
plt.plot(x, y, label="Voltage (V)") # 折れ線グラフ
plt.title("Measurement Results") # タイトル
plt.xlabel("Time (s)") # X軸ラベル
plt.ylabel("Voltage (V)") # Y軸ラベル
plt.legend() # 凡例
plt.show() # グラフを表示する
実行結果

3. 散布図の作成
点データをプロットするには、散布図が使用されます。
(1) 基本構造
以下に、散布図作成の方法を示します。
import matplotlib.pyplot as plt
# データ
x = [1, 2, 3, 4, 5] # 横軸
y = [2.1, 2.3, 2.2, 2.5, 2.4] # 縦軸
# 散布図を作成
plt.scatter(x, y, color="red", label="Measured Points")
plt.title("Scatter Plot of Measurements") # タイトル
plt.xlabel("Time (s)") # X軸ラベル
plt.ylabel("Voltage (V)") # Y軸ラベル
plt.legend() # 凡例
plt.show() # グラフを表示
実行結果
点をプロットしたグラフが表示されます。この方法を活用することで、生データを直接視覚化できます。

4. データのグラフタイトルやラベルの追加
データの可視化には、グラフが何を表しているかを明示するために、タイトルや軸ラベル、凡例を追加することが重要です。
(1) 関数と基本的な使用法
タイトルを付ける:plt.title(“タイトル名”)
X軸ラベル:plt.xlabel(“ラベル名”)
Y軸ラベル:plt.ylabel(“ラベル名”)
凡例:plt.legend()
例:ラベルとタイトルの追加
以下では、ラベルやタイトルを含むグラフを作成する例です。
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
# 折れ線グラフ
plt.plot(x, y, label="Squared Values", color="blue")
plt.title("Y = X * X") # タイトルを追加
plt.xlabel("X-Axis") # X軸のラベル
plt.ylabel("Y-Axis") # Y軸のラベル
plt.legend() # 凡例を表示
plt.show()
実行結果

5. 複数データのグラフでの表現
複数の測定データを1つのグラフに表示することで、比較がしやすくなります。
(1) 基本構造
異なるデータを複数回プロット
plt.plot(x1, y1, label="Data 1")
plt.plot(x2, y2, label="Data 2")
plt.legend()
例:複数データのプロット
import matplotlib.pyplot as plt
# データ
x = [1, 2, 3, 4, 5]
y1 = [2.1, 2.3, 2.2, 2.5, 2.4] # 測定データ1
y2 = [1.1, 1.3, 1.2, 1.5, 1.4] # 測定データ2
# 複数のデータをプロット
plt.plot(x, y1, label="Voltage Channel 1", color="blue")
plt.plot(x, y2, label="Voltage Channel 2", color="green")
plt.title("Comparison of Two Measurement Channels") # タイトル
plt.xlabel("Time (s)") # X軸
plt.ylabel("Voltage (V)") # Y軸
plt.legend() # 凡例
plt.show()
実行結果
異なる測定チャネルのデータを比較する折れ線グラフが作成されます。

6. 実践プログラム例
プログラム例:計測データをグラフ化するプログラム
以下のプログラムは、測定データを取得し、グラフとして表示する完全なワークフローを実装しています。
import matplotlib.pyplot as plt
import numpy as np
# ダミーデータ(実際には計測器から取得)
time = np.linspace(0, 10, 100) # 時間 [0〜10秒を100分割]
voltage = np.sin(2 * np.pi * time / 5) + 0.1 * np.random.normal(size=100) # 正弦波 + ノイズ
# 折れ線グラフ
plt.plot(time, voltage, label="Measured Voltage", color="blue")
plt.title("Voltage over Time") # タイトル
plt.xlabel("Time (s)") # X軸ラベル
plt.ylabel("Voltage (V)") # Y軸ラベル
plt.legend() # 凡例
plt.grid(True) # グリッドを追加
plt.show()
実行結果

7. 演習問題
演習問題 1: 測定データの視覚化
以下のプログラムを完成させてください。
計測器から取得したデータ(例:時系列)をグラフにプロットします。
タイトル、ラベル、凡例を適切に追加してください。
解答例を表示
import matplotlib.pyplot as plt
import pyvisa
# PyVISAで計測器に接続
rm = pyvisa.ResourceManager()
resources = rm.list_resources()
if resources:
# 最初のリソースを使用
instrument = rm.open_resource(resources[0])
# 複数回測定データを取得
time = []
data = []
print("測定中...")
for i in range(20): # 10回繰り返し測定
result = instrument.query("MEAS:VOLT?") # 電圧値取得
voltage = float(result) # 数値に変換
time.append(i)
data.append(voltage) # データをリストに追加
# 折れ線グラフ
plt.plot(time, data, label="Measured Voltage", color="blue")
plt.title("Voltage") # タイトル
plt.xlabel("Times") # X軸ラベル
plt.ylabel("Voltage (V)") # Y軸ラベル
plt.legend() # 凡例
plt.grid(True) # グリッドを追加
plt.show()
# 接続を終了
instrument.close()
else:
print("計測器が接続されていません。")
実行結果(例)

演習問題 2: 複数チャネルのデータをグラフ化
ダミーデータとして、2つの異なる測定チャネルに対応するデータを用意してください。
それぞれのデータを1つのグラフにプロットし、ラベルや凡例を正しく追加してください。
解答例を表示
import matplotlib.pyplot as plt
# データ
x = [1, 2, 3, 4, 5]
y1 = [0, 3.5, 2.1, 8.4, 4.3] # 測定データ1
y2 = [3.6, -2.1, 0, 5.8, 1.5] # 測定データ2
# 複数のデータをプロット
plt.plot(x, y1, label="Voltage Channel 1", color="blue")
plt.plot(x, y2, label="Voltage Channel 2", color="green")
plt.title("Comparison of Two Measurement Channels") # タイトル
plt.xlabel("Time (s)") # X軸
plt.ylabel("Voltage (V)") # Y軸
plt.legend(“Sample data”) # 凡例
plt.show()
実行結果(例)

次回予告
次回(第8回)は、「測定データの応用処理とレポート生成」を学びます。本回でグラフ化したデータを結合し、CSVファイルやPDFレポートの形式で出力する方法を学びます!