数値型データをPythonで可視化する:ステムプロット(Stem Plot)の活用法

数値型データを時間や順序に基づいて視覚化したい場合、どのようなグラフが最適でしょうか?Stem Plotは、下図のようにデータポイントをベースラインから各値まで垂直線とマーカーで表現し、変化を明確にPythonで視覚化する方法です。

수치형 데이터 스템 플롯으로 파이썬 시각화한 그림
(数値データステムプロットでPythonで視覚化した図)

今回の記事では パイソン matplotlibを使ってステムプロットを描き、数値データを効果的に視覚化する方法を学びます。 ステップバイステップのコードと一緒に詳細な説明を提供しますので、ぜひ、参考にしてみてください!

数値データとステムプロット

数値型データとは?

Numerical Dataは 数字で表現されるデータを意味し、連続型(身長、体重)と離散型(個数、カウント)に分けられます。

ステムプロットとは?

ステムプロットは 垂直線とマーカーを使用して数値データを視覚化するためのグラフです。

  • データポイントを線とマーカーで強調します。
  • 順序時間による変化を表現するときに便利です。

該当データ例

以下は実際に活用できる 数値データ例です。

수치형 데이터 예시 그림

1.センサー測定値

センサーが時間に応じて温度または湿度を測定した結果です。

時間(分)温度(°C)
122
224
323
425
  • 活用: 時間と温度データをステムプロットで可視化すると、特定の時間帯に温度が急激に上昇したり、下降したりするパターンを確認することができます。

2.製品販売量

製品が特定の期間(例えば、1日単位)に販売された個数です。

日付販売量(個)
1日目50
2日目80
3日間30
4日100
5日70
  • 活用:ステムプロットを活用すれば、日別の販売量の変動を直感的に確認することができます。 特定の日に販売量が急増した原因を分析するのに役立ちます。

3.試験点数

学生がある試験で受けた点数です。

学生番号スコア
175
290
365
485
  • 活用:スコア分布と特定の学生の成績の変化を強調するために、ステムプロットを使用することができます。

4.イベント発生回数

特定のシステムやマシンでイベントが発生した回数を記録したデータです。

時間帯イベント回数
00:005
01:002
02:0010
03:008
  • 活用: 特定の時間帯にイベントが集中するパターンをプロットで確認すると、原因を分析して最適化することができます。

PythonのStemplotコード例

下記のコードで数値データを視覚化するStemplotを実装してみましょう。

matplotlib.pyplot as plt をインポートします。
import numpy as np

# 数値データ生成
x = np.range(0, 100, 1) # X軸: 0から99までの順列データ
y = np.random.randint(50, 300, size=100) # Y軸: 50~300の間のランダムな数値データ

# ステムプロットを描く
plt.figure(figsize=(12, 6)) # グラフサイズの設定
plt.stem(x, y, linefmt='b-', markerfmt='bo', basefmt='r-')

# グラフのタイトルとラベル
plt.title("Stem Plot of Numerical Data", fontsize=15)
plt.xlabel("Index", fontsize=12)
plt.ylabel("Values", fontsize=12)

# レイアウトの調整とグラフ出力
plt.tight_layout()
plt.show()

コードの簡単な解説

  1. データ生成
    • xX軸に使用する0から99までの 順序型データ.
    • yY軸に使用する50から300の間の ランダム数値データ.
  2. ステムプロットの描画
    • plt.stem():ステムプロットを描画する関数。
    • linefmt='b-'垂直線を青の実線で表示。
    • markerfmt='bo':データポイントを青い丸いマーカーで表示。
    • basefmt='r-'基準線(底線)を赤い実線で表示。
  3. グラフのレイアウト設定
    • タイトル、X/Yラベルを設定し tight_layout()で余白を調整してグラフをきれいに出力します。

仕上げ

ステムプロットは、数値データを直感的にPythonで視覚化するのに便利です。 各ポイントをベースラインから接続された線とマーカーで表し、各ポイントが データの変化を明確に表現することができます。次のような活用例を考えることができます。

活用例

  • センサーデータのPythonによる可視化時間によるセンサー値変化の分析。
  • 時系列データ特定の期間中の変化を強調しています。
  • スパイク分析:データの急激な変動検出。

Pythonで視覚化することに興味がある方、 Python可視化でカテゴリ型データを可視化する:グループ別棒グラフとカテゴリ型データの例 記事をご覧いただき、関連知識を深めてみてください!

#コード詳細解説

1.ライブラリの読み込み

matplotlib.pyplot as plt をインポートします。
import numpy as np  
  • matplotlib.pyplot: グラフを描くためのライブラリ。
  • numpy: 数値データを生成するために使用されます。

2.数値データ生成

x = np.range(0, 100, 1) # X軸: 0から99までの順序データ
y = np.random.randint(50, 300, size=100) # Y軸:50~300の間の任意の数値データ  
  • np.range(0, 100, 1): 0から99まで1間隔の数字を生成します。
  • np.random.randint(50, 300, size=100): 50から300までの整数を100個生成します。

3.ステムプロットの描画

plt.figure(figsize=(12, 6))
plt.stem(x, y, linefmt='b-', markerfmt='bo', basefmt='r-', use_line_collection=True)  
  • plt.figure(figsize=(12, 6))グラフのサイズを横12、縦6に設定します。
  • plt.stem():ステムプロットを描きます。
    • linefmt='b-'垂直線を青の実線で表示。
    • markerfmt='bo':データポイントを青い丸いマーカーで表示。
    • basefmt='r-'基準線を赤の実線で表示。
    • use_line_collection=True:グラフのパフォーマンスを最適化するオプションです。

4.グラフのタイトルとラベルの設定

plt.title("Stem Plot of Numerical Data", fontsize=15)
plt.xlabel("Index", fontsize=12)
plt.ylabel("Values", fontsize=12)  
  • plt.title(): グラフのタイトルを設定します。
  • plt.xlabel(): X軸のラベルを設定します。
  • plt.ylabel()Y軸ラベルを設定します。

5.レイアウト調整とグラフ出力

plt.tight_layout()
plt.show()  
  • plt.tight_layout(): グラフの余白を自動的に調整し、要素が重ならないようにします。
  • plt.show(): グラフを画面に出力します。

類似の投稿