Как сделать подсюжеты в круговой диаграмме пончика в matplotlib pyhon - PullRequest
0 голосов
/ 14 ноября 2018

Как сделать подсюжеты в круговой диаграмме пончика в matplotlib pyhon?

Ниже код, который я написал,

import matplotlib.pyplot as plt

labels = 'Frogs', 'Hogs', 'Dogs'
sizes = [15, 30, 45]
colors = ['yellowgreen', 'gold', 'lightskyblue']
explode = (0, 0, 0)  # explode a slice if required
subgroup_names = ['A.1', 'A.2', 'A.3', 'B.1', 'B.2', 'C.1']
subgroup_size = [13, 3, 5, 6, 5, 10]
a, b, c = [plt.cm.Blues, plt.cm.Reds, plt.cm.Greens]

plt.pie(sizes, explode=explode, labels=labels, pctdistance=0.45, labeldistance=0.65, colors=colors, autopct='%.2f%%', shadow=True)
centre_circle = plt.Circle((0, 0), 0.175, color='black', fc='white', linewidth=1.25)

plt.pie(subgroup_size, labels=subgroup_names, pctdistance=0.85, labeldistance=1.25, colors=[a(0.5), a(0.4), a(0.3), b(0.5), b(0.4), c(0.6)], autopct='%.2f%%', shadow=True)
centre_circle2 = plt.Circle((0, 0), 0.275, color='red', fc='white', linewidth=1.25)

fig = plt.gcf()
fig.gca().add_artist(centre_circle)
fig.gca().add_artist(centre_circle2)


plt.axis('equal')
plt.show()

Результат показывает как на картинке ниже,

this is result image from my coding

Но я надеюсь, что результат, как показано на рисунке ниже (должны отображать процентное значение). Я надеюсь, что это результат (с процентным значением):

this is the result I hope come out(with percentage value)

1 Ответ

0 голосов
/ 14 ноября 2018

В документации Matplotlib есть очень хорошие примеры практически для всего, о чем вы можете мечтать.См. здесь для вложенной круговой диаграммы.

После комментария к ответам только для ссылок радиус ключевого слова - это то, что вы ищете в своем вызове pie ().Он принимает значение с плавающей точкой, которое определяет абсолютный радиус вашего пирога.Таким образом, для рисования вложенных пирогов требуется несколько вызовов функции pie (), каждый из которых имеет свое значение радиуса.Пожалуйста, посмотрите пример ниже

import matplotlib.pyplot as plt
plt.pie([1, 2, 3], radius=1,
        colors=['xkcd:cerulean', 'xkcd:bright red', 'xkcd:grass green'],
        labels=['Group A', 'Group B', 'Group C'], autopct='%.2f%%',
        pctdistance=0.85, shadow=True,
        wedgeprops=dict(width=0.3, edgecolor='white'))

plt.pie([0.3, 0.7, 0.4, 1.5, 0.1, 3], radius=0.7,
        colors=['xkcd:sky blue', 'xkcd:light blue', 'xkcd:reddish pink',
                'xkcd:salmon pink', 'xkcd:baby pink', 'xkcd:apple green'],
        wedgeprops=dict(width=0.3, edgecolor='white'),
        labels=['A.1', 'A.2', 'B.1', 'B.2', 'B.3', 'C.1'], autopct='%.2f%%',
        pctdistance=0.8, labeldistance=0.4, shadow=True)
plt.axis('equal')
plt.show()

, который возвращает следующий график enter image description here

...