ドーナツグラフ&2重ドーナツグラフの作り方【matplotlib】

matplotlib

ドーナツグラフ

ドーナツグラフは円グラフを作るplt.pie()wedgepropswidthを設定すると作成できます。
widthは円グラフの幅を調整するパラメータで、1.0にすると普通の円グラフになります。

円グラフを作成するplt.pie()について、詳しくはこちらの記事をご覧ください。

import matplotlib.pyplot as plt
import numpy as np

x = np.array([3, 5, 1, 6])

wedge = {
    'width' : 0.4
}

plt.pie(x, wedgeprops=wedge)
plt.show()

こちらのドキュメントを参考にしました。

matplotlib.patches.Wedge — Matplotlib 3.8.2 documentation
Labeling a pie and a donut — Matplotlib 3.8.2 documentation

2重ドーナツグラフ

2重ドーナツグラフはドーナツグラフを応用することで作成できます。

2重ドーナツグラフは2つのドーナツグラフが干渉しないように半径や幅をうまく設定してやる必要がありますが、ドーナツグラフの作り方がわかっていれば意外と簡単です。

2重ドーナツグラフの作り方がわかれば3重,4重のドーナツグラフも同じようにして作ることができるでしょう。

import matplotlib.pyplot as plt
import numpy as np

# データの用意
outer_data = np.array([3, 5, 1, 6])

inner_data = np.array([])
weights = [[0.2, 0.8], [0.3, 0.3, 0.4], [1], [0.5, 0.5]]
for o_data, weight_set in zip(outer_data, weights):
    for weight in weight_set:
        inner_data = np.append(inner_data, o_data*weight)

# グラフの設定
radius = 1
width_outer = 0.2
width_inner = 0.3

wedge_inner = {
    'width' : width_inner,
    'edgecolor' : 'white'
}
wedge_outer = {
    'width' : width_outer,
    'edgecolor' : 'white'
}

# 描画
plt.pie(outer_data, radius=radius ,wedgeprops=wedge_outer)
plt.pie(inner_data, radius=radius-width_outer, wedgeprops=wedge_inner)
plt.show()

こちらのドキュメントを参考にしました。

Nested pie charts — Matplotlib 3.8.2 documentation

コメント