Pythonで matplotlib を使って Mariadbのデータをグラフ表示

Ubuntu Desktop 22.04 LTS ノウハウ
Python + MariaDB
matplotlib を使って Mariadbのデータをグラフ表示
 
Mariadbに蓄積されているデータを、Pythonの matplotlib を使ってグラフに表示してみる。
 
matplotlib を使って Mariadbのデータをグラフ表示
 
以下、Pythonでの matplotlib の使い方を記録。
 
 

 

スポンサー リンク

 

 
 
 
 
 
1. 必要なライブラリ
 
必要なライブラリのインストール。
pip install matplotlib mysql-connector-python
 
 
 
2. Pythonスクリプト
 
# -*- coding: utf-8 -*-

import mysql.connector
import matplotlib.pyplot as plt

# Mariadbへの接続情報
db_config = {
    'host': 'localhost',
    'user': 'flaskpy',
    'password': 'password',
    'database': 'ondodb',
}

# Mariadbへの接続
connection = mysql.connector.connect(**db_config)
cursor = connection.cursor()

# 温度と湿度のデータを取得
query = "SELECT nitiji, temp1, temp2, temp3, temp4 FROM meas_value"
cursor.execute(query)
result = cursor.fetchall()

# 取得したデータをリストに格納
timestamps, temperature1, temperature2, temperature3, temperature4 = zip(*result)

# グラフの描画
plt.figure(figsize=(18, 8))
plt.plot(timestamps, temperature1, label='室内', marker='o', markersize=2)
plt.plot(timestamps, temperature2, label='カーテン', marker='o', markersize=1)
plt.plot(timestamps, temperature3, label='内窓', marker='o', markersize=1)
plt.plot(timestamps, temperature4, label='窓際', marker='o', markersize=2)

# グラフの設定
plt.title('Temperature and Humidity Over Time')
plt.xlabel('Timestamp')
plt.ylabel('Value')
plt.legend()
plt.grid(True)
plt.xticks(rotation=45)
plt.yticks(range(0, 40, 2))  # 目盛りを0から最大値まで2刻みで表示
plt.tight_layout()

# グラフを表示
plt.show()

# Mariadbとの接続をクローズ
cursor.close()
connection.close()
 
表示されたグラフ。
matplotlib を使って Mariadbのデータをグラフ表示
 
 
 
3. スクリプトの説明
 
SELECT文。
query = "SELECT nitiji, temp1, temp2, temp3, temp4 FROM meas_value"
 
SELECT文では、データベースから取得したい列のカラム名を変数queryに代入しています。。
上記は、タイムスタンプ、温度1、温度2、温度3および温度4のデータをテーブル「meas_value」から取得します。
 
 
変数へのアンパッキング。
timestamps, temperature1, temperature2, temperature3, temperature4 = zip(*result)
 
ここでは、zipとアンパッキング(*演算子)を使用しています。
zip(*result)
zip関数は、与えられた複数のイテラブル(ここではresult)から要素を取り出し、それらをタプルとしてまとめる役割を果たします。
*演算子は、タプルの要素をアンパックして、それぞれのイテラブルの対応する位置にある要素を個別の引数として渡します。
上記の行では、zip(*result)の結果をそれぞれ5つの変数にアンパッキングしています。
これにより、resultから取得したデータがそれぞれのリストに分割されます。
 
 
グラフのサイズ設定。
plt.figure(figsize=(18, 8))
 
plt.figure()は、新しい図(figure)を作成するための関数です。
figsizeは、作成される図のサイズを指定するパラメータです。
ここでは、(18, 8)というタプルが指定されており、横幅が18インチ、高さが8インチの図が作成されます。
この寸法は、グラフの描画領域全体の物理的なサイズを指定します。
 
 
markerパラメータの設定。
plt.plot(timestamps, temperature1, label='室内', marker='o', markersize=2)
 
markerは折れ線グラフ上での各データポイントを示すマーカーの種類を指定します。一般的には、デフォルトでは点が表示されますが、そのサイズを変更することができます。
markersizeを調整して点のサイズを小さくしています。
 
 
Y軸の目盛幅の設定。
plt.yticks(range(0, 40, 2))  # 目盛りを0から40まで2刻みで表示
 
Y軸の目盛幅を拡大するには、matplotlibのyticksメソッドを使用して目盛りの範囲や間隔を調整します。
range(0, 40, 2)で、目盛りを0から40まで2刻みで表示しています。
 

 

以上。
(2024.02.29)

 

 

スポンサー リンク

 

             

 

 

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください