ウィンロスチャートで連勝・連敗を瞬時に把握

中級

6.7.12

ウィンロスチャートで連勝・連敗を瞬時に把握

最終更新 2020-07-01 読了時間 1 分
まとめ
  • ウィンロスチャートで勝敗シーケンスを0ライン基準の縦棒で可視化する。
  • ax.barで正負の高さを振り分け、勝ちを緑・負けを赤で色分け。
  • 営業成績やスポーツ戦績の連勝・連敗パターンを把握するときに使う。

営業やスポーツの勝敗履歴は、連勝・連敗の塊を強調すると流れがつかみやすくなります。ウィンロスチャートなら 0 ラインを挟んだ縦棒で勢いを表現できます。

 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
import matplotlib.pyplot as plt
import numpy as np

results = np.array([1, 1, -1, 1, 1, 1, -1, -1, 1, -1, 1, 1, 1, -1, -1, -1])
streaks = np.cumsum(results)
colors = np.where(results > 0, "#22c55e", "#ef4444")

fig, ax = plt.subplots(figsize=(6.4, 3.2))
ax.bar(
    np.arange(len(results)),
    height=np.where(results > 0, 1, -1),
    width=0.8,
    color=colors,
)
ax.axhline(0, color="#475569", linewidth=1)
ax.set_xticks(range(len(results)), labels=[f"{i+1}戦目" for i in range(len(results))], rotation=60)
ax.set_yticks([-1, 0, 1], labels=["負け", "", "勝ち"])
ax.set_ylim(-1.4, 1.4)
ax.set_title("直近16試合の勝敗シーケンス")
ax.set_ylabel("結果")

for idx, cumulative in enumerate(streaks):
    if (idx + 1) % 4 == 0:
        ax.text(idx, 1.15, f"{cumulative:+}", ha="center", fontsize=9)

fig.tight_layout()

plt.show()

ウィンロスチャートなら 0 ラインを挟んだ縦棒で勢いを表現できますの図

読み方のポイント #

  • 緑が連続していれば連勝モード、赤が続くと連敗期。流れの転換点を説明しやすくなります。
  • ストリーク数を補足で載せると、勢いの度合いを定量的に伝えられます。
  • 結果が多くなると読みづらくなるので、四半期など一定期間ごとに区切るのがおすすめです。

いつ使うか #

  • 適している場面: 勝ち負けや目標達成/未達を二値のバーで時系列に並べてストリークを把握したいとき。
  • 不向きな場面: 値の大きさ(勝ち幅・負け幅)を表現できないため、スコア差を示したい場合には不向きです。
  • 代替手段: 値の大きさも含めたいならダイバージングバーの方が正負の度合いを表現できます。

よくある失敗パターン #

  • 値の大きさの情報欠落: 勝ち負けの二値だけでは大勝と僅差の勝ちの区別がつきません。スコア差が重要なら棒の高さを変えるか別図を併用してください。
  • 長い期間の圧縮: 数百試合分を1行に詰めると個々の結果が見えなくなります。シーズンごとに行を分けるなど適切な区切りを入れましょう。