[matplotlib] 60. 円グラフの要素の一部を棒グラフで表示

matplotlib

はじめに

この記事では、matplotlibのplt.pieを使用して作成した円グラフの要素の一部を、plt.barを使用した棒グラフで詳細に表示する方法を解説します。この手法を使うことで、データの概要を円グラフで示しつつ、特定の部分を棒グラフでより詳細に可視化することができます。

コード

解説

モジュールのインポートなど

図の生成

subplots_adjustのhspaceパラメータを0に設定することで、上下に配置されたグラフ間の余白をなくします。

円グラフの作成

サンプルデータ(ratios)とラベル(labels)を生成します。explodeは円グラフの要素を飛び出させる設定で、この例ではSの部分を強調表示します。angleパラメータは円グラフの開始角度を調整するもので、Sが円グラフの下部に位置するよう設定しました。

棒グラフの作成

水平棒グラフはbarhを使用して作成しました。xposは0に固定し、leftの値を変えることで積み上げ棒グラフを実現しています。テキストを表示するyposは、ypos = left + ax2.patches[j].get_width() / 2という計算式で各棒の中央に配置されるようにしています。

凡例と軸の設定

凡例はlegendでncol=4とすることで4列としました。

棒グラフと円グラフの一部を結ぶ線の表示

円グラフの一部の座標の取得

円グラフの一部分であるWedgeのtheta1、theta2、中心点centerと半径rを取得し、棒グラフ全体の長さも取得します。

右側の線の表示

ConnectionPatchオブジェクトのcon_rを作成し、ax2.add_artist(con_r)メソッドを使ってグラフ上に表示します。

左側の線の表示

同上です。

コードをダウンロード(.pyファイル)

コードをダウンロード(.ipynbファイル)

まとめ

円グラフと棒グラフを組み合わせることで、データの全体像と詳細を効果的に表現できることを学びました。この手法はビジネスレポートやデータ分析の結果発表において特に有用で、視聴者に重要なポイントを明確に伝えることができます。matplotlibの柔軟性を活かした表現方法として、様々なデータ可視化シナリオに応用可能です。

参考

https://matplotlib.org/gallery/pie_and_polar_charts/bar_of_pie.html
matplotlib.pyplot.pie — Matplotlib 3.10.6 documentation
matplotlib.pyplot.barh — Matplotlib 3.10.6 documentation
matplotlib.patches.ConnectionPatch — Matplotlib 3.10.6 documentation

コメント