バーコードタイムラインで頻度を瞬時に把握

中級

6.7.16

バーコードタイムラインで頻度を瞬時に把握

最終更新 2020-08-26 読了時間 1 分
まとめ
  • バーコードタイムラインで時系列イベントの密度を縦線で表現する。
  • ax.vlines でイベント発生日を描画し、集中期間を発見する。
  • ログやアラートの頻度パターンを俯瞰したいときに使う。

イベントが発生した日付だけが重要な場合、縦線の並びで密度を見せるバーコードタイムラインが便利です。期間の偏りや集中がひと目で分かります。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import pandas as pd
import matplotlib.pyplot as plt

dates = pd.to_datetime(
    [
        "2024-01-05",
        "2024-01-08",
        "2024-01-12",
        "2024-01-20",
        "2024-02-02",
        "2024-02-07",
        "2024-02-08",
        "2024-02-17",
        "2024-03-01",
        "2024-03-09",
        "2024-03-10",
        "2024-03-24",
        "2024-04-02",
        "2024-04-18",
        "2024-05-01",
    ]
)

fig, ax = plt.subplots(figsize=(6.4, 1.8))
ax.vlines(dates, ymin=0, ymax=1, color="#0f172a", linewidth=2)
ax.set_ylim(0, 1)
ax.set_yticks([])
ax.set_title("重要アラート発生日のバーコードタイムライン")
ax.set_xlabel("日付")
ax.set_xlim(dates.min() - pd.Timedelta(days=3), dates.max() + pd.Timedelta(days=3))

ax.tick_params(axis="x", rotation=45)
ax.spines[["left", "top", "right"]].set_visible(False)

fig.tight_layout()

plt.show()

期間の偏りや集中がひと目で分かりますの図

読み方のポイント #

  • 縦線が密集するほどイベント集中期間です。直近の混雑やピークを直感的に伝えられます。
  • 線の高さや色を変えると、イベントタイプや重み付けも同時に表現できます。
  • 時系列が長い場合は月ごとに区切ったり、スクロール表示にすると読みやすくなります。

いつ使うか #

  • 適している場面: イベントの発生頻度や時間的パターンを細い縦線の密度で直感的に把握したいとき。
  • 不向きな場面: イベント数が極端に多いと線が塗りつぶし状態になり、個別のイベントを区別できません。
  • 代替手段: 期間ごとの頻度を集計してヒストグラムや折れ線グラフにする方が正確な頻度比較ができます。

よくある失敗パターン #

  • 線の太さの不適切な設定: 線が太すぎると時間の密度が分からず、細すぎると見えません。データの時間スパンに合わせて linewidth を調整してください。
  • イベントの種類の区別なし: すべてのイベントを同色の線で描くと種類の違いが分かりません。色分けや行分割でイベント種別を区別しましょう。