круговая диаграмма показывает процент определенных значений

#pandas #matplotlib #pie-chart #figure

#панды #matplotlib — файл #круговая диаграмма #рисунок #pandas #matplotlib

Вопрос:

Файл состоит из нескольких групп городов и информации о времени. Я взял код откуда-то из stackoverflow и немного изменил его:

 fig, ax = plt.subplots(figsize=(8, 5.5), subplot_kw=dict(aspect="equal"))
wedges,texts, autotexts = ax.pie(File, autopct= '%1.1f%%',
                                  textprops=dict(color="g"))

ax.legend(wedges, File.index,
          title="Signatures", loc = 0, bbox_to_anchor=(-0.85, 1, 0.7, 0.35), ncol = 2
          )
plt.setp(autotexts, size=6, weight="bold")
plt.tight_layout()
ax.set_title("Timing(%)")
  

2 проблемы, которые я до сих пор не решил:
Во-первых, как мне сохранить названия групп городов (по 4 или 5) внутри круговой диаграммы, а не только в легенде? (но не всех ..только тех, кто появляется чаще всего!) и, во-вторых, как мне скрыть все проценты, которые меньше 10%? У меня есть 12-23 группы (несколько диаграмм), и иногда «процентный текст» перезаписывается.

Ответ №1:

 import numpy as np
import pandas as pd
from matplotlib import pyplot as py

%pylab inline
  

Вот исходный код, который я тестировал на наборе данных магазина велосипедов. Просто измените его на то, что вам нужно.

 def autopct(pct): # only show the label when it's > 10%
    return ('%.2f' % pct) if pct > 10 else ''

my_labels = ('Tires, and Tubes', 'Bottle and Cages', 'Road Bikes', 'Helmets', 'Mountain Bikes', 'Jerseys', 
             'Caps', 'Fenders','Touring Bikes', 'Gloves', 'Cleaners', 'Shorts' ,'Hydration Packs', 'Socks', 
             'Vests', 'Bike Racks', 'Bike Stands')

ax = df['Sub_Category'].value_counts().plot(kind='pie', figsize=(28,12), autopct=autopct, labels=None)
ax.axes.get_yaxis().set_visible(False)
plt.legend(loc=5, labels=my_labels)
  

введите описание изображения здесь
Надеюсь, это поможет!

Комментарии:

1. Привет, спасибо, у меня появилась идея, но если я добавлю проценты, они снова будут перекрываться

2. Кроме того, можно ли нарезать «оставшиеся» и не считать их одним ломтиком?