06.7.5
極座標の面積チャート
plt.subplots(subplot_kw=dict(polar=True)) で極座標の軸を作り、ax.bar(angles, volume, width=2 * np.pi / 12) に角度と値を渡すだけで扇形が並びます。読み終えると、6 月に 350 件でピークを迎え 1 月の 120 件が谷になる季節性を円の形から読み取り、同時に「扇形の面積は半径の 2 乗で増えるので差が誇張される」という落とし穴を踏まえて使えるようになります。直感 #
月別の問い合わせ件数を 12 本の棒グラフにすると、12 月の棒と 1 月の棒は図の両端に離れてしまい、「冬の谷」が 2 つに分断されて見えます。時計の文字盤のように 12 か月を円周に並べ、各月の値を中心からの長さにすれば、12 月の隣に 1 月が来て冬の谷が 1 つのくぼみとして見えます。扇形が外に張り出した方向がピークの季節で、この例では 6 月(350 件)に向かって最も大きく膨らみます。ただし扇形の面積は半径の 2 乗に比例するので、件数が 2 倍の月は面積では 4 倍に見え、差が誇張されることを頭に入れて読む必要があります。
Python で描く #
次のコードは 12 か月の件数を用意し、月番号を角度(0 から 2π を 12 等分)に変換して、極座標の ax.bar で 12 本の扇形を描きます。目盛りラベルを「1月」〜「12月」に置き換え、半径の目盛りは消します。
| |

実行結果の読み方 #
中心から外へ長く伸びた扇形ほど件数が多く、この例では 5〜7 月(310〜350 件)の方向に大きく膨らみ、12 月から 1 月(130〜120 件)にかけてが最も短くなります。12 月と 1 月が円周上で隣り合うため、冬の谷が途切れずに 1 つのくぼみとして読めます。扇形の長さ(半径)を比べれば件数の比較は正しいのですが、面積で比べると 6 月は 1 月の約 3 倍の件数が約 8.5 倍の面積に見えるので、「どのくらい多いか」は半径で読むように意識してください。
使いどころと落とし穴 #
極座標面積チャートは、月別・曜日別・時間帯別のように「周期的で、終わりと始まりがつながる」データのピークの方向を直感的に見せる用途に向いています。正確な値の比較が目的なら、長さだけで比べられる通常の棒グラフの方が誤読がありません。面積の誇張を避けたい場合は、ax.bar(angles, np.sqrt(volume)) のように半径を値の平方根にすると面積が値に比例します。セクターが 12 を超えると隣どうしの差が分かりにくくなるので、時間帯なら 24 を 3 時間ごとの 8 区間にまとめるなど、12 本以下に抑えてください。複数年を重ねるときは alpha を年ごとに変えるか、扇形ではなく ax.plot の折れ線で輪を重ねると見やすくなります。