График p ie со значениями - PullRequest
       0

График p ie со значениями

2 голосов
/ 16 января 2020

Мой df ниже

sales_qtr_month = sales_qtr.groupby(['Month']).agg('sum')
    Sales2015   Sales2016
Month       
Q1  5.485800e+06    6.997953e+06
Q2  5.390862e+06    7.237361e+06
Q3  6.164094e+06    7.861546e+06
Q4  5.713634e+06    7.567868e+06

p ie код диаграммы

sales_qtr_month.plot.pie(figsize=(15,15),subplots=True)

enter image description here

  • Как добавить значения Q1, Q2, Q3, Q4 на график?

1 Ответ

2 голосов
/ 16 января 2020

Я не уверен, как генерировать ваши данные, поэтому я просто сгенерирую что-то похожее, чтобы охватить все этапы.

# Make some data
raw_data = {'Sales2016': [10, 20, 900, 100, 50],
            'Sales2015': [10, 20, 30, 100, 50],
        'Month': ['Q1', 'Q2', 'Q3', 'Q4', 'Q5']}

# Generate a dataframe
df = pd.DataFrame(raw_data, columns = ['Sales2016','Sales2015', 'Month'])

После этого я буду запускать groupby (), который вообще не изменит данные. Цель этого groupby () - получить DataFrameGroupBy, который похож на тот, который задан OP.

df_sum = df.groupby(['Month']).agg('sum')

, который создает

    Sales2016   Sales2015
Month       
Q1      10         10
Q2      20         20
Q3      900        30
Q4      100        100
Q5      50         50

С этого момента я бы сгладил DataFrameGroupBy и индексируйте его по месяцам.

df_flatten = df_sum.reset_index().set_index('Month')

Ссылка , предоставленная steven , дает действительно хорошее представление о том, как маркировать в matplotlib. Функция pandas .DataFrame.plot.p ie оборачивает matplotlib.pyplot.p ie (), поэтому мы можем использовать некоторые методы из этой ссылки.

Сначала мы объявляем функцию для скрытия процент в целом числе. Эта функция аналогична той, что дана по этой ссылке . Я добавил в функцию round (), чтобы она не давала ложное число (например, int (889.99) = 899, но нам нужно 900)

# Covert percent and total to value
def func(pct, allvals):
    absolute = int(round(pct/100*np.sum(allvals)))
    return "${:.1f}".format(absolute)

Теперь мы можем построить график p ie составьте график с меткой, мы можем указать autopct, аналогичный указанному в ссылке

f, axes = plt.subplots(1,2, figsize=(10,10))
for ax, col in zip(axes, df_flatten.columns):
    print(col)
    df_flatten[col].plot(kind='pie', autopct=lambda pct: func(pct, df_flatten[col].tolist()), labels=df_flatten.index,  ax=ax, title=col, fontsize=10)
    ax.legend(loc=3)

Ваши ярлыки должны появиться.

result

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...