Как построить список ключей для списков, где мы строим среднее значение списка и показываем диапазоны остальных? [Python] - PullRequest
0 голосов
/ 06 мая 2020

У меня есть что-то вроде этого dict:

{10: [891, 506, 714, 430, 294, 659, 430, 430, 375, 430, 294, 714, 1510, 1049, 847, 430, 430, 430, 1410, 1657], 12: [676, 466, 719, 727, 573, 1202, 466, 719, 573, 885, 573, 573, 573, 573, 518, 518, 573, 573, 1465, 466]}

Я пытаюсь построить график, на котором ось x имеет ключи (например: 10,12, 14 ...), а ось y представляет собой среднее значение списка, соответствующего ключу, и я хочу показать несколько столбцов, которые представляют квартили или возможный диапазон? Кто-нибудь знает, как я могу go это сделать?

Это в Python кстати.

Любая помощь приветствуется.

Ответы [ 2 ]

1 голос
/ 06 мая 2020
import matplotlib.pyplot as plt

data = {10: [891, 506, 714, 430, 294, 659, 430, 430, 375, 430, 294, 714, 1510, 1049, 847, 430, 430, 430, 1410, 1657],
        12: [676, 466, 719, 727, 573, 1202, 466, 719, 573, 885, 573, 573, 573, 573, 518, 518, 573, 573, 1465, 466]}
keys = sorted(data)  # keys in a defined order

plt.boxplot([data[k] for k in keys], positions=keys)  # box-and-whisker plot
plt.plot(keys, [sum(data[k]) / len(data[k]) for k in keys], '-o')  # line for the mean

plt.savefig('nice-box-plots')

Добавление whis=(10, 90) в качестве аргумента к plt.boxplot поместит усы на плитку 10 и 90%, см. do c коробчатых диаграмм .

Screen-Shot-2020-05-06-at-22-51-13.png

1 голос
/ 06 мая 2020

Я предлагаю вам превратить ваши данные в pandas фрейм данных, продолжить все вычисления на этом фрейме данных и построить график. Например:

df = pd.DataFrame(data)
plot_data = df.agg(['mean', 'std']).T
plt.errorbar(plot_data.index, plot_data['mean'], yerr=plot_data['std'])

Вывод:

enter image description here

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