はじめに
この記事では、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の柔軟性を活かした表現方法として、様々なデータ可視化シナリオに応用可能です。
コメント