バンプチャートで順位推移を可視化

中級

6.7.3

バンプチャートで順位推移を可視化

最終更新 2020-02-26 読了時間 1 分
まとめ
  • バンプチャートで期間ごとのランキング推移を折れ線で可視化する。
  • ax.plot で順位を結び、set_ylim で軸を反転させて上位を上に表示する。
  • ブランドや商品カテゴリの競争順位変動を追跡したいときに使う。

四半期ごとの売上順位を線でつないだバンプチャートです。順位を上下反転して描くのがポイントです。

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

quarters = ["Q1", "Q2", "Q3", "Q4"]
brands = ["Alpha", "Bravo", "Charlie", "Delta", "Echo"]
ranks = np.array(
    [
        [1, 2, 3, 3],
        [3, 1, 1, 2],
        [2, 3, 2, 1],
        [4, 4, 5, 4],
        [5, 5, 4, 5],
    ]
)

fig, ax = plt.subplots(figsize=(7, 4))

for brand, rank in zip(brands, ranks):
    ax.plot(quarters, rank, marker="o", linewidth=2, label=brand)

ax.set_ylim(5.5, 0.5)
ax.set_ylabel("順位")
ax.set_title("ブランド別 売上順位の推移")
ax.grid(axis="y", alpha=0.2)
ax.legend(loc="upper right", bbox_to_anchor=(1.15, 1))

fig.tight_layout()

plt.show()

順位を上下反転して描くのがポイントですの図

読み方のポイント #

  • 順位は値が小さいほど上位のため、軸を反転させると視覚的に理解しやすい。
  • ラインの色やマーカーでブランドを識別し、凡例を右側に配置して重なりを避ける。
  • 特定のブランドを強調したい場合は太さや色を変えると効果的。

いつ使うか #

  • 適している場面: 時点ごとの順位変動を折れ線で表示したいとき。競合分析やランキング推移の可視化に向いています。
  • 不向きな場面: 順位の同率が多い場合、線が重なって判読困難になります。
  • 代替手段: 値そのものの推移が重要なら通常の折れ線グラフの方が定量的な比較に適しています。

よくある失敗パターン #

  • 順位同率の処理不足: 同率順位がある場合に線が重なって判別不能になります。jitter を加えるか、ラベルで補足してください。
  • ラベルの省略: 線の始点や終点にラベルがないと凡例と照合する手間がかかります。線の端にカテゴリ名を直接表示しましょう。