我写了一个小脚本,每次打开一个新的终端窗口时都会收集我的外部IP地址,然后将它和当前时间一起附加到文本文件中。我正在寻找可视化我的IP地址何时/多久更改的方法的想法。我在家庭和校园之间蹦蹦跳跳,可以使用脚本将它们分开,但是将它们单独看成是很好的。
我经常使用matplotlib。有什么想法吗?
答案 0 :(得分:4)
将您的IP绘制为the xkcd internet map上的一个点(或地图的某个放大子集,以更好地显示不同但非常相邻的IP)。
将每个点“堆叠”绘制成与您拥有该IP的频率成比例,并为IP着色以使更近的点更亮,更近的点比例更暗。
答案 1 :(得分:1)
“当”是一维时间数据,时间线很好地显示。在更大的时间尺度上,你可能会丢失细节,但大多数“何时”的情节会有这个缺陷。
对于“多久一次”,时间与频率的标准2d(条形)图,分为每天/每周/每月的桶,将是标准的方法。移动平均线也可能是信息性的。
你可以把时间轴和时间线结合起来。条形图,放大时可以看到时间轴&缩小时的频率显示。
水平轴上有条形图的条形图怎么样,每个条形图的宽度是计算机保存特定IP地址的时间长度,每个条形图的高度与宽度成反比?这也将给出一个时间曲线与经常情节的情节。
您还可以将数据解释为pulse density modulated信号,就像您在SuperAudio CD上获得的那样。您可以绘制图形,甚至可以监听数据。由于IP更改事件没有明显的时间长度,因此脉冲的长度将是可调参数。沿着类似的路线,您可以将数据视为方波(三角波,锯齿波和c),其中每个IP更改事件都是一个电平转换。听起来像一个有趣的Pure Data项目。
答案 2 :(得分:0)
matplotlib用户指南中有一节介绍图表上的条形图来表示范围。我自己从未这样做过,但它似乎适合你所寻找的东西。
答案 3 :(得分:0)
假设您指定了终端,我假设您使用的是UNIX变体系统。使用-f开关和命令行实用程序尾部可以让您持续监视文件的结尾。您还可以使用IBM的inotify之类的东西,它可以监视文件更改或dnotify(并将文件放在它自己的目录中),这通常是大多数发行版的标准(然后您可以调用tail -n 1来获取最后一个线)。一旦线条发生变化,您可以使用Python的time.time()从epoch获取当前系统时间,并从最后一次更改时减去它,然后使用matplotlib绘制这个差异。我假设你可以分类时间 进入范围,使图形更容易自己。 1条不到1小时更换间隔,另一条更改1至5小时,依此类推。
如果你不想直接使用它,那么tail -f的Python实现位于here。检测到文件中的更改后,您可以执行上述操作。