ドーナツグラフ
ドーナツグラフは円グラフを作るplt.pie()
のwedgeprops
でwidth
を設定すると作成できます。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.6.3 documentation
Labeling a pie and a donut — Matplotlib 3.6.3 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.6.3 documentation
コメント