Отступы между частями круговой диаграммы

Рейтинг: 2Ответов: 1Опубликовано: 31.05.2023

Подскажите пожалуйста варианты реализации увеличения отступов в круговой диаграмме
Сейчас имеется следующая диаграмма
Круговая диаграмма

Ее код:

data = [{'name': '', 'counter': 12}, {'name': 'РФ', 'counter': 1463}, {'name': 'регионы', 'counter': 106}]

def create_geo_diagram(data):
    n = 0
    for el in data:
        n += el['counter']

    geo_name = []
    geo_counter = []
    for el in data:
        geo_name.append(el['name'])
        geo_counter.append(round(100/n*(el['counter']), 2))

    matplotlib.use('Agg')

    labels = geo_name
    values = geo_counter

    colors_list = [
        '#d45aa5', '#2f9cdf', '#f19b3a', '#785fb3', '#f16d4e', '#375b7d',
        '#7a5195', '#bc5090', '#ef5675', '#ff764a', '#ffa600']
    colors = []
    for n in range(len(labels)):
        colors.append(colors_list[n])

    plt.subplots(figsize=(9, 8))
    fig, ax = plt.subplots(figsize=(9, 8))
    plt.rcParams['font.size'] = '16'
    plt.title('Распределение постов по ГЕО', fontsize='16')
    plt.pie(values, labels=labels, colors=colors, autopct='%1.1f%%', wedgeprops=dict(width=0.1, edgecolor='w'))
    plt.axis('equal')
    plt.legend()
    plt.savefig(r'geo_diagram.png')
    plt.rcParams.update(plt.rcParamsDefault)
    plt.close()

Каким методом можно увеличить размер отступа между данными?
Сейчас там маленькая беля линия находится, но в идеале она должна быть примерно следующего размера:

Пример нужного размера отступов в диаграмме

Ответы

▲ 2Принят

Во-первых, непонятно, зачем вы дважды объявляете subplots:

. . .

#    plt.subplots(figsize=(9, 8)) <-- зачем ?
fig, ax = plt.subplots(figsize=(9, 8)) # этого достаточно, тем более, что
                                       # нам возвращают нужные нам холсты
plt.rcParams['font.size'] = '16'
plt.title('Распределение постов по ГЕО', fontsize='16')

# получаем список объектов-секторов (wedges) и отрисовываем
# круговую диаграмму ООП-методом (через ax, а не plt):
wedges, texts, autotexts = ax.pie(values, labels=labels, colors=colors, autopct='%1.1f%%', wedgeprops=dict(width=0.1, edgecolor='w'))

# задаем каждому из них толщину линий
for wedge in wedges:
    wedge.set_linewidth(4)

. . .

получаете:

введите сюда описание изображения