06.7.16
バーコードタイムラインで頻度を瞬時に把握
ax.vlines(dates, ymin=0, ymax=1) の 1 行で済み、Y 軸の目盛りと枠線を消すことで細長いバーコードの見た目になります。読み終えると、15 件のアラート日付から 2 月と 3 月の集中を読み取り、線幅 linewidth や期間の切り方を自分のログデータに合わせて調整できるようになります。直感 #
サーバーの重要アラートが 1 月から 5 月までに 15 回鳴ったとします。日付を表に並べても「2 月上旬と 3 月上旬に固まっている」とは気づきにくいものです。そこで日付を時間軸に置き、1 件を 1 本の縦線に変えます。線が詰まって黒く見える区間が集中期間、白く空く区間が静かな期間になり、バーコードを眺めるだけで偏りが読めます。棒グラフのように件数を集計しないので、1 日に 2 件起きた日も線が重なって 1 本に見える点だけは覚えておく必要があります。
Python で描く #
次のコードは、15 件のアラート発生日を pd.to_datetime で日付型に変換し、ax.vlines で高さ 1 の縦線として並べます。図の高さを 1.8 インチに抑え、左右の枠線と Y 軸目盛りを消して「線の並び」だけが目に入るようにしています。
| |

実行結果の読み方 #
線が詰まっている区間がイベントの集中期間です。この例では 2 月 7 日と 8 日が隣り合い、3 月 9 日と 10 日も隣り合うので、月初めに連続して鳴る傾向が見えます。4 月以降は線が 2 本しかなく、間隔も 2 週間以上空いているので落ち着いた時期と読めます。線の色や高さを変えればアラートの種類を区別できますが、まず 1 色で密度を読むのが基本です。
使いどころと落とし穴 #
バーコードタイムラインが向くのは、イベント数が十数件から数百件で、発生時期の偏りを伝えたいときです。1 日に数十件も起きるようなログでは線が塗りつぶされて黒い帯になるので、その場合は週ごとに resample("W").count() で集計してヒストグラムか折れ線に切り替えます。線の太さは期間に合わせて決めるもので、4 か月に linewidth=2 が目安、1 年なら 1、2 週間なら 4 程度まで太くできます。種類の違うイベントを同じ色で重ねると区別がつかないので、color を種類ごとに変えるか、系列ごとに行を分けて plt.subplots(nrows=...) で積みます。
- ガントチャート — タスクの開始・終了期間を横棒で一覧
- Rugplot — 個票を軸上の短い線で表示
- カレンダーヒートマップ — 年間の日別指標を曜日×週で俯瞰