2009-04-15 56 views
1

我写了一个小脚本,每当我打开一个新的终端窗口并将它添加到当前时间,并将其添加到文本文件中时,它就会收集我的外部IP地址。我正在寻找想法,以便可视化我的IP地址何时/多久更改一次。我在家中和校园之间跳动,并可以使用脚本将它们分开,但是单独对它们进行可视化会很好。如何在python中更改IP地址时可视化?

我经常使用matplotlib。有任何想法吗?

回答

4

将您的IP绘制为the xkcd internet map(或某些放大的地图子集,以更好地显示不同但紧密相邻的IP)上的点。

将每个“堆积”点绘制成与您拥有该IP的频率成比例,并对IP进行着色以使最近的点更亮,最近的点更加黑暗。

+0

我想知道这是否可能为几个不同的IP地址集。对于我在城镇周围获得的各种动态IP有不同的情节。 – physicsmichael 2009-04-15 03:56:52

0

在matplotlib用户指南中有关于图表上的绘图条来表示范围的章节。我从来没有这样做过,但它看起来适合你在找什么。

0

假设你指定了终端,我假设你在UNIX变体系统上。使用-f开关和命令行实用程序尾部可以让您不断监视文件的结尾。你也可以使用像IBM的inotify这样的程序,它可以监视文件变更或者将dnotify(并将文件放置在它自己的目录中),这在大多数发行版上通常是标准的(然后你可以调用tail -n 1来获得最后一行)。一旦线条发生变化,您可以使用Python的time.time()获取自epoch以来的当前系统时间,并从最后一次更改的时间中减去该时间,然后使用matplotlib绘制该差异。我假设你可以将时间 分类到范围中,以使自己的绘图更容易。 1小时更换间隔小于1小时,另一小时更换1至5小时,等等。

如果你不想直接使用它,有一个尾部-f的Python实现,位于here。在检测到文件发生变化时,您可以执行上述操作。

1

“何时”是一维时间数据,这在时间轴上很好地显示。在更大的时间尺度上,你可能会失去细节,但大多数情况下,“什么时候”都会有这种缺陷。

对于“多长时间一次”,标准的二维(时间)与频率(每天/每周/每月分为桶)的时间曲线图将是一个标准方法。移动平均线也可能是信息性的。

您可以将时间轴&条形图与缩小时缩放频率显示时可见的时间轴组合在一起。

水平轴上的时间条形图如何,其中每个条形的宽度是计算机持有特定IP地址的时间长度,每个条形的高度与宽度成反比?这也将给出一个时间与多少时间的情节图。

您也可以将数据解释为pulse density modulated信号,就像您在SuperAudio CD上获得的信号一样。你可以绘制这个图表,甚至可以收听数据。由于IP变化事件没有明显的时间长度,因此脉冲的长度将是可调参数。沿着类似的路线,您可以将数据视为方波(三角波,锯齿& c),其中每个IP更改事件都是一个电平转换。听起来很有趣Pure Data项目。