Pythonの視覚化で学ぶドーナツチャートの描画とネスト方法

パイソン ビジュアライゼーションを使用すると、複雑なデータを美しくわかりやすいチャートで表現することができます。 特に、ドーナツチャートは比率を視覚化する際に非常に便利なツールです。しかし、単純に比率を表現するだけでは満足できません!ネストされたドーナツチャートを活用すれば、トレンディで深みのあるビジュアライゼーションを作成することができます。
この記事では Pythonの視覚化ライブラリである matplotlibを使ってドーナツチャートを段階的に描く方法を学びます。基本的なドーナツチャートからネストされたドーナツチャートを描画する高度なテクニックまで詳しく解説しますので、ぜひ、じっくりとご覧ください!
ドーナツチャートとは何ですか?
ドーナツチャートは パイチャートの変形で、中央部分が空洞になっている形式この空白のスペースがチャートをすっきりさせ、追加情報を入れるのにも有利です。
主な特徴
- データ比率を直感的に表示します。
- 複数のデータを重ね合わせて表現することで、多次元的な視覚化が可能です。
- すっきりとしたモダンなデザインは、トレンディなデータビジュアライゼーションに適しています。
Pythonビジュアライゼーションで基本的なチャートを描く

まず、上記のような基本的なチャートを描く方法から説明します。 ここでは、上のように matplotlibを活用します。
Pythonコード例 - 基本的なドーナツチャート
# ライブラリの読み込み
import matplotlib.pyplot as plt
#データ設定
labels = ['Country A', 'Country B', 'Country C', 'Country D']].
sizes = [30, 20, 35, 15].
colors = ['#ff9999', '#66b3ff', '#99ffff99', '#ffcc99']].
#ドーナツチャートを生成
fig, ax = plt.subplots()
ax.pie(sizes, labels=labels, colors=colors, wedgeprops=dict(width=0.3), autopct='%1.1f%%')
#中央に円を追加 (ドーナツ型にする)
centre_circle = plt.Circle((0, 0), 0.70, fc='white')
fig.gca().add_artist(centre_circle)
# チャートのタイトル設定
plt.title('Basic Donut Chart')
plt.show()ネストチャートの描画
ネストチャートは、データの 2つの層を同時に視覚化する際に使用します。 各レイヤーがデータをより豊かに見せてくれます。
Pythonコード例 - ネスティングドーナツチャート
matplotlib.pyplot as plt をインポートします。
# 外部ドーナツデータの設定
outer_labels = ['Germany', 'France', 'China', 'UK', 'Italy']].
outer_sizes = [30, 23, 16, 18, 13]].
# 内部ドーナツデータ設定
inner_labels = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']].
inner_sizes = [15,15,12,11,8,8,8,9,9,9,9,7,6]。
# 色設定
outer_colors = plt.cm.Blues([0.6, 0.7, 0.8, 0.9, 1.0])
inner_colors = plt.cm.RdYlBu_r([0.6, 0.6, 0.6, 0.7, 0.7, 0.8, 0.8, 0.9, 0.9, 1.0, 1.0])
#ネスティングドーナツチャートの生成
fig, ax = plt.subplots()
# 外側のドーナツ層
ax.pie(outer_sizes, labels=outer_labels, radius=1.3, colors=outer_colors、
wedgeprops=dict(width=0.3), labeldistance=1.1, autopct='%1.1f%%%', pctdistance=0.85)
# 内側のドーナツ層
ax.pie(inner_sizes, labels=inner_labels, radius=1.0, colors=inner_colors、
wedgeprops=dict(width=0.3), labeldistance=0.7, autopct='%1.1f%%', pctdistance=0.6)
#の中央を空ける(ドーナツ形完成)
centre_circle = plt.Circle((0, 0), 0.6, fc='white')
fig.gca().add_artist(centre_circle)
# タイトル設定(padオプションで間隔を調整)
plt.title('Improved Nested Donut Chart with Adjusted Labels', pad=30)
# レイアウト設定
plt.tight_layout()
plt.show()よくある間違い
- データが過剰に多い場合: 項目が多すぎるとチャートが複雑になります。主なデータだけを含めるようにしてください。
- 色の混乱: 似たような色を使用すると、アイテムの区別が難しい場合があります。カラーパレットを活用しましょう。
- 比率とラベルの不一致:
autopctを使用して、正確な比率が表示されるように確認する必要があります。
よくある質問(FAQ)
Q1.このチャートはいつ使うのが良いですか?
このチャートは、比率 比較が必要だが、すっきりとしたモダンなデザインが必要な状況に適しています。
Q2.ネストドーナツチャートの用途は何ですか?
2つの階層のデータを同時に比較・分析する場合に効果的です。
Q3.円グラフとの違いは何ですか?
ドーナツチャートは真ん中が空白のため、追加情報を表示したり、デザイン的に優れています。
仕上げ
ドーナツチャートはパイチャートの単調さを脱却し、Pythonの可視化で人気のある手法です。基本的なチャートからネストされたチャートまで、実践的なデータを活用して素敵なドーナツチャートを作ってみましょう!データビジュアライゼーションの魅力に一歩近づくことができるでしょう。
ちなみに、Pythonの可視化分野では、時系列分析をする人が多いです。 Pythonデータ分析の例:S&P 500の株式データの時系列分析と将来の価格予測を行う ポストを通してその知識を身につけましょう!
# コード詳細解説
基本的なチャートの描画
# ライブラリの読み込み import matplotlib.pyplot as plt
- ライブラリの読み込み
matplotlib.pyplot:データ可視化のために使用するmatplotlibのサブモジュールです。- このモジュールは グラフ、チャート などを描くのに活用されます。
# データ設定 labels = ['Country A', 'Country B', 'Country C', 'Country D']]. sizes = [30,20,35,15]を設定します。 colors = ['#ff9999', '#66b3ff', '#99ff99', '#ffcc99']].
- データ設定
ラベル: 各ピース(セクション)の名前です。例:「Country A」、「Country B」など:'Country A', 'Country B' など。サイズ:各部分の比率を設定します。例:30%, 20%, 35%, 15%.カラー各セクションに使用するカラーコードです。
'#ff9999'カラー : ライトピンク'#66b3ff'カラー : ライトブルー'#99ff99'カラー : ライトグリーン'#ffcc99'色 : オレンジ色# ドーナツチャート生成 fig, ax = plt.subplots()
- チャート作成
イチジク、斧: 図(キャンバス)と 軸(グラフが描かれる領域)を生成します。plt.subplots(): 新しいチャートを描くためのスペースを準備します。ax.pie(sizes, labels=labels, colors=colors, wedgeprops=dict(width=0.3), autopct='%1.1f%%')
- ドーナツチャート作成
サイズ各セクション(ピース)の比率を表します。ラベル=ラベルセクションに表示されるラベル(名前)を設定します。colors=colors: セクションの色を設定します。wedgeprops=dict(width=0.3): ドーナツ型を作るために彫刻の幅を調整します。
幅=0.3は、円全体の幅のうち内側の70%を空ける設定です。autopct='%1.1f%%'各ピースに比率(%)を表示します。
%1.1f小数点以下1桁まで表示するように設定します。# 真ん中の円を追加 (ドーナツ型にする) centre_circle = plt.Circle((0, 0), 0.70, fc='white') fig.gca().add_artist(centre_circle)
- 真ん中の円を追加(ドーナツ型にする)
plt.Circle((0, 0), 0.70, fc='white'):
(0, 0): 円の中心座標です。0.70円の半径を設定します。fc='white'円の色を白に設定します。fig.gca().add_artist(centre_circle):
- 現在のaxes(グラフ領域)に上記で生成した白い円を追加します。
- このコードのおかげで、真ん中が空白の ドーナツ型が完成します。
# チャートのタイトル設定 plt.title('Basic Donut Chart')
- チャートタイトル設定
plt.title(): チャート上部にタイトルを追加します。基本ドーナツチャート: チャートのタイトル文字列です。plt.show()
- 結果出力
plt.show(): チャートを画面に表示します。- このコマンドを実行することで、チャートが最終的に出力されます。
ネストチャートの描画
matplotlib.pyplot as plt をインポートします。
- ライブラリの読み込み
- データ可視化のための
matplotlibのパイプロットモジュールをインポートします。# 外部ドーナツデータ設定 outer_labels = ['Germany', 'France', 'China', 'UK', 'Italy']]. outer_sizes = [30, 23, 16, 18, 13]].
- 外部ドーナツデータ設定
outer_labels外側のドーナツに表示される各ピースの名前です。outer_sizes: 外側のドーナツの各部分の比率(%)を表します。# 内部ドーナツデータ設定 inner_labels = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']]. inner_sizes = [15,15,12,11,8,8,8,9,9,9,9,7,6]。
- 内部ドーナツデータ設定
インナーラベルです:内側のドーナツに表示される各ピースの名前です。インナーサイズを設定します:内側のドーナツの各部分の比率で、外側の部分の比率に合わせて分割して設定します。# 色設定 outer_colors = plt.cm.Blues([0.6, 0.7, 0.8, 0.9, 1.0]) inner_colors = plt.cm.RdYlBu_r([0.6, 0.6, 0.6, 0.7, 0.7, 0.8, 0.8, 0.9, 0.9, 1.0, 1.0])
- カラー設定
plt.cm.Blues外側のドーナツに使用するカラーパレットで、青系の色合いを作ります。plt.cm.RdYlBu_r:内部ドーナツに使用するカラーパレットとして、赤-黄-青の組み合わせを適用します。[]内の数字は色の濃さ(0~1)を設定します。# ネスティングドーナツチャートを作成します。 fig, ax = plt.subplots()
- チャート作成
イチジク、斧: 新しい figure と axes オブジェクトを作成します。plt.subplots()チャートを描くキャンバスを用意します。# 外側のドーナツ層 ax.pie(outer_sizes, labels=outer_labels, radius=1.3, colors=outer_colors、 wedgeprops=dict(width=0.3), labeldistance=1.1, autopct='%1.1f%%%', pctdistance=0.85)
- 外側のドーナツ生成
outer_sizes: 外側のドーナツの比率を入力します。labels=outer_labels各ピースに表示するラベル(国名)を設定します。radius=1.3外側のドーナツの半径を設定します。colors=outer_colors: 外側のドーナツの色を設定します。wedgeprops=dict(width=0.3)ドーナツの形を作るために、各ピースの幅を設定します。ラベル距離=1.1: ラベル(国名)をドーナツの外側に少し移動させます。autopct='%1.1f%%'各部分の割合を小数点以下1桁で表示します。pctdistance=0.85比率テキストをドーナツ片の内側に近い位置に配置します。# 内側のドーナツ層 ax.pie(inner_sizes, labels=inner_labels, radius=1.0, colors=inner_colors、 wedgeprops=dict(width=0.3), labeldistance=0.7, autopct='%1.1f%%', pctdistance=0.6)
- 内側のドーナツ生成
インナーサイズ: 内部ドーナツの比率を入力します。labels=inner_labels各ピースに表示するラベルを設定します。radius=1.0を設定します:内側のドーナツの半径を設定します。colors=inner_colors: 内側のドーナツの色を設定します。wedgeprops=dict(width=0.3)ドーナツの形を作ります。ラベル距離=0.7ラベル(文字列)を彫刻の内側に近い位置に配置します。autopct='%1.1f%%'比率を小数点以下1桁で表示します。pctdistance=0.6比率テキストをより内側に移動させます。# 中央を空ける (ドーナツ形完成) centre_circle = plt.Circle((0, 0), 0.6, fc='white') fig.gca().add_artist(centre_circle)
- 真ん中を空ける
plt.Circle((0, 0), 0.6, fc='white')中央に白い円を追加して、ドーナツの形を完成させます。add_artist(centre_circle):チャートに白い丸を追加します。(0, 0):中心座標です。0.6白丸の半径です。# タイトル設定(padオプションで間隔を調整) plt.title('Improved Nested Donut Chart with Adjusted Labels', pad=30)
- タイトル設定と間隔調整
plt.title(): チャート上部にタイトルを追加します。パッド=30: タイトルとチャートの間隔を30ピクセルに調整します。"ネストされたドーナツチャートのラベルを調整した改良版": チャートのタイトルです。# レイアウト設定 plt.tight_layout()
- レイアウトの最適化
plt.tight_layout(): チャートの要素が互いに重ならないように自動的に余白を調整します。plt.show()
- 結果出力
- チャートを画面に表示します。






