Как визуализировать IP-адреса, как они меняются в Python? - PullRequest
1 голос
/ 15 апреля 2009

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

Я часто использую matplotlib. Есть идеи?

Ответы [ 4 ]

4 голосов
/ 15 апреля 2009

Создайте свой IP-адрес в качестве точки на интернет-карте xkcd (или увеличенной в подмножестве карты, чтобы лучше отображать разные, но близко соседние IP-адреса).

Нанесите на карту каждую точку, «составленную», пропорционально тому, как часто у вас был этот IP, и раскрасьте IP, чтобы сделать более свежие точки более яркими, а менее свежие - пропорционально темнее.

1 голос
/ 15 апреля 2009

«Когда» - это одномерные временные данные, которые хорошо показаны на временной шкале. В больших временных масштабах вы, вероятно, потеряете детали, но в большинстве случаев «когда» будет этот дефект.

Для «Как часто» стандартным способом будет стандартный 2-мерный график времени и частоты, разделенный на сегменты для каждого дня / недели / месяца. Скользящее среднее также может быть информационным.

Вы можете объединить временную шкалу и линейный график с временной шкалой, видимой при увеличении, и отображением частоты при уменьшении.

Как насчет гистограммы со временем на горизонтальной оси, где ширина каждого столбца - это период времени, в течение которого ваш компьютер удерживал определенный IP-адрес, а высота каждого столбца обратно пропорциональна ширине? Это также дало бы график того, когда и как часто график.

Вы также можете интерпретировать данные как сигнал с модуляцией плотности импульсов , например, как на компакт-диске SuperAudio. Вы можете составить график или даже прослушать данные. Поскольку для события изменения IP нет очевидной длительности, длина импульса будет настраиваемым параметром. В том же духе вы можете просматривать данные в виде прямоугольной волны (треугольная волна, пилообразная линия и т. Д.), Где каждое событие изменения IP является переходом уровня. Звучит как забавный проект Pure Data .

0 голосов
/ 15 апреля 2009

Предполагая, что вы указали терминал, я предполагаю, что вы работаете в системе UNIX. Использование ключа -f вместе с утилитой командной строки позволяет вам постоянно отслеживать конец файла. Вы также можете использовать что-то вроде IBM inotify , которое может отслеживать изменения файлов или уведомлять (и помещать файл в свой собственный каталог), что обычно входит в стандартную комплектацию большинства дистрибутивов (затем вы можете вызвать tail -n 1, чтобы получить последняя строка). Как только линия изменится, вы можете получить текущее системное время с начала эпохи с помощью Python time.time () и вычесть его из времени последнего изменения, а затем построить график этой разницы с помощью matplotlib. Я полагаю, вы могли бы классифицировать время в диапазонах, чтобы упростить построение графиков на себе. 1 бар для интервалов смены менее 1 часа, другой для интервалов между 1 - 5 часами и т. Д.

Существует реализация на Python tail -f, расположенная здесь , если вы не хотите использовать ее напрямую. Обнаружив изменение в файле, вы можете выполнить описанное выше.

0 голосов
/ 15 апреля 2009

В руководстве пользователя matplotlib есть раздел о рисовании полос на диаграмме для представления диапазонов. Я никогда не делал этого сам, но это кажется подходящим для того, что вы ищете.

...