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

今回の記事では パイソン matplotlibを使ってステムプロットを描き、数値データを効果的に視覚化する方法を学びます。 ステップバイステップのコードと一緒に詳細な説明を提供しますので、ぜひ、参考にしてみてください!
数値データとステムプロット
数値型データとは?
Numerical Dataは 数字で表現されるデータを意味し、連続型(身長、体重)と離散型(個数、カウント)に分けられます。
ステムプロットとは?
ステムプロットは 垂直線とマーカーを使用して数値データを視覚化するためのグラフです。
- データポイントを線とマーカーで強調します。
- 順序私 時間による変化を表現するときに便利です。
該当データ例
以下は実際に活用できる 数値データ例です。

1.センサー測定値
センサーが時間に応じて温度または湿度を測定した結果です。
| 時間(分) | 温度(°C) |
|---|---|
| 1 | 22 |
| 2 | 24 |
| 3 | 23 |
| 4 | 25 |
| … | … |
- 活用: 時間と温度データをステムプロットで可視化すると、特定の時間帯に温度が急激に上昇したり、下降したりするパターンを確認することができます。
2.製品販売量
製品が特定の期間(例えば、1日単位)に販売された個数です。
| 日付 | 販売量(個) |
|---|---|
| 1日目 | 50 |
| 2日目 | 80 |
| 3日間 | 30 |
| 4日 | 100 |
| 5日 | 70 |
- 活用:ステムプロットを活用すれば、日別の販売量の変動を直感的に確認することができます。 特定の日に販売量が急増した原因を分析するのに役立ちます。
3.試験点数
学生がある試験で受けた点数です。
| 学生番号 | スコア |
|---|---|
| 1 | 75 |
| 2 | 90 |
| 3 | 65 |
| 4 | 85 |
| … | … |
- 活用:スコア分布と特定の学生の成績の変化を強調するために、ステムプロットを使用することができます。
4.イベント発生回数
特定のシステムやマシンでイベントが発生した回数を記録したデータです。
| 時間帯 | イベント回数 |
|---|---|
| 00:00 | 5 |
| 01:00 | 2 |
| 02:00 | 10 |
| 03:00 | 8 |
| … | … |
- 活用: 特定の時間帯にイベントが集中するパターンをプロットで確認すると、原因を分析して最適化することができます。
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()
コードの簡単な解説
- データ生成
xX軸に使用する0から99までの 順序型データ.yY軸に使用する50から300の間の ランダム数値データ.
- ステムプロットの描画
plt.stem():ステムプロットを描画する関数。linefmt='b-'垂直線を青の実線で表示。markerfmt='bo':データポイントを青い丸いマーカーで表示。basefmt='r-'基準線(底線)を赤い実線で表示。
- グラフのレイアウト設定
- タイトル、X/Yラベルを設定し
tight_layout()で余白を調整してグラフをきれいに出力します。
- タイトル、X/Yラベルを設定し
仕上げ
ステムプロットは、数値データを直感的に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(): グラフを画面に出力します。






