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

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

У меня есть значения температуры за месяц (в каждый день по 4 измерения), мне необходимо создать по ним именно круговую диаграмму (на matplotlib) через plt.pie(). Значения температуры содержатся в дата-фрейме и находятся все в диапазоне 0-20 градусов. Мне необходимо, чтобы по сегментам диаграммы было расположено кол-во измерений (в качестве об. значения соотношений), результатом которых стала определённая температура (в качестве необ. labels=).

Пока у меня получилось такое: введите сюда описание изображения

Заранее спасибо за помощь.

Ответы

▲ 0

Если я правильно понял проблему, у вас диаграмма получалась перенасыщенной, поскольку у вас замеры не группируются, а отображаются все. Для придания диаграмме более-менее стройного вида нужно нарезать все множество замеров на дискретные диапазоны с каким-нибудь шагом, например, 1 градус.

import pandas as pd
import matplotlib.pyplot as plt

temp_range = 0, 20  # температурный диапазон для моделирования
# моделируем 31*4 измерений в температурном диапазоне
df = pd.DataFrame(np.random.random(31 * 4) * (temp_range[1] - temp_range[0]) + temp_range[0], columns=['temp'])
# нарезаем все температуры на дискретные диапазоны с шагом в 1 градус. Иначе диапазонов будет столько же, сколько замеров
df['bins'] = pd.cut(df.temp, bins=temp_range[1] - temp_range[0],
                    labels=[f'{i} гр.' for i in range(temp_range[0], temp_range[1])])
cnt = df.bins.value_counts()  # считаем кол-во "температур"
plt.pie(cnt, labels=cnt.index)  # формируем диаграмму
plt.show()  # отображаем

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