はじめに
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ファイル)参考
Bar of pie — Matplotlib 3.9.3 documentation
matplotlib.pyplot.pie — Matplotlib 3.9.2 documentation
matplotlib.pyplot.barh — Matplotlib 3.9.3 documentation
matplotlib.patches.ConnectionPatch — Matplotlib 3.9.3 documentation
コメント