Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 10, 2022 15:00:21

freeman86
Зарегистрирован: 2016-09-22
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Создать гистограмму плотности распределения по реальным данным (не сгенерированным)

Доброго времени суток. Есть задача построить гистограмму по реальным данным(дельта времени между отправкой пакетов на сервер и приемом). На данный момент, код, который рисует гистограмму выглядит так:

 plt.hist(delta_time)
где delta_time массив с набором времени каждого пакета
все выглядит более менее адекватно, пока пакетов не много. Когда пакетов, например, 6000, то гистограмма приобретает вид одного столбика. Хотя, если исследовать массив, видно что есть “выбросы”, которые превышают среднее время в десятки раз. Из чего я думаю, что мне нужно логарифмическое отображение количества пакетов (по оси Х). Может кто-нибудь подсказать, как это сделать? Я пробовал экспериментировать с библиотекой и модулем np.histogram, но по факту получилось тоже самое.

Офлайн

#2 Янв. 10, 2022 23:00:04

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9873
Репутация: +  853  -
Профиль   Отправить e-mail  

Создать гистограмму плотности распределения по реальным данным (не сгенерированным)

freeman86
код, который рисует гистограмму выглядит так
  
plt.hist(delta_time)
Маловато инфы. Этот кусочек может означать что угодно.

Так-то можно вот этот код и так запустить
  
>>> class Secret:
...     def hist(self, data):
...         print('Иди ты в жопу со своими {}!'.format(', и '.join(map(str, data))))
... 
>>> delta_time = [0.5, 0.125, 1.15]
>>> 
>>> plt = Secret()
>>> 
>>> plt.hist(delta_time)
Иди ты в жопу со своими 0.5, и 0.125, и 1.15!
>>>



Отредактировано py.user.next (Янв. 10, 2022 23:01:27)

Офлайн

#3 Янв. 10, 2022 23:29:42

freeman86
Зарегистрирован: 2016-09-22
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Создать гистограмму плотности распределения по реальным данным (не сгенерированным)

py.user.next
 import matplotlib.pyplot as plt
delta_time = [14, 31, 654, 32, ......87, 42]
plt.hist(delta_time)

Офлайн

#4 Янв. 10, 2022 23:59:57

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9873
Репутация: +  853  -
Профиль   Отправить e-mail  

Создать гистограмму плотности распределения по реальным данным (не сгенерированным)

Попробуй это

  
import matplotlib.pyplot as plt
 
delta_time = [14, 31, 654, 32, 87, 42]  * 6000
plt.hist(delta_time, 200)
plt.grid(True)
plt.show()

Инфа тут есть, как настраивать. Там же пример.



Офлайн

#5 Янв. 11, 2022 12:23:22

freeman86
Зарегистрирован: 2016-09-22
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Создать гистограмму плотности распределения по реальным данным (не сгенерированным)

py.user.next
Попробуй это
Спасибо за ответ!
 delta_time = [14, 31, 654, 32, 87, 42]  * 6000
Не понимаю, для чего умножать массив на количество посылок?

plt.hist(delta_time, 200) 200 это bins?

Отредактировано freeman86 (Янв. 11, 2022 12:25:46)

Офлайн

#6 Янв. 11, 2022 22:30:01

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9873
Репутация: +  853  -
Профиль   Отправить e-mail  

Создать гистограмму плотности распределения по реальным данным (не сгенерированным)

freeman86
Не понимаю, для чего умножать массив на количество посылок?
Ну вот ты писал, что когда значений мало, всё видно, а когда значений много, всё сливается.
freeman86
все выглядит более менее адекватно, пока пакетов не много. Когда пакетов, например, 6000, то гистограмма приобретает вид одного столбика.
Так что я приблизил количество значений к твоему количеству, когда всё сливается. А что такое 200, я не знаю. Я просто поставил её, запустил и увидел, что ничего не сливается больше.



Отредактировано py.user.next (Янв. 11, 2022 22:30:42)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version