1

我编写了一个小脚本,每次我打开一个新的终端窗口时都会收集我的外部 IP 地址,并将其以及当前时间附加到一个文本文件中。我正在寻找一种方法来可视化我的 IP 地址何时/多久更改一次。我在家庭和校园之间跳来跳去,可以使用脚本将它们分开,但最好将它们分开可视化。

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

4

4 回答 4

4

将您的 IP 绘制为xkcd 互联网地图上的一个点(或一些放大的地图子集,以更好地显示不同但相邻的 IP)。

绘制与您拥有该 IP 的频率成正比的“堆叠”每个点,并为 IP 着色以使最近的点更亮,最近的点按比例变暗。

于 2009-04-15T01:48:54.710 回答
1

“何时”是一维时间数据,通过时间线很好地显示出来。在更大的时间尺度上,您可能会丢失细节,但大多数“何时”的情节都会有这个缺陷。

对于“多久”,标准的时间与频率 2d(条形图)图,分为每天/每周/每月的桶,将是一种标准的方式。移动平均线也可能提供信息。

您可以结合时间线和条形图,放大时可见时间线,缩小时显示频率。

横轴上带有时间的条形图怎么样,其中每个条的宽度是您的计算机持有特定 IP 地址的时间长度,每个条的高度与宽度成反比?这也将给出何时与多久绘制一次的图。

您还可以将数据解释为脉冲密度调制信号,就像您在 SuperAudio CD 上获得的一样。您可以绘制此图,甚至可以收听数据。由于 IP 更改事件没有明显的时间长度,因此脉冲长度将是一个可调参数。沿着类似的思路,您可以将数据视为方波(三角波、锯齿波等),其中每个 IP 更改事件都是电平转换。听起来像是一个有趣的纯数据项目。

于 2009-04-15T01:30:42.447 回答
0

matplotlib 用户指南中有一节关于在图表上绘制条形以表示范围。我自己从来没有这样做过,但它似乎适合你正在寻找的东西。

于 2009-04-15T01:15:15.930 回答
0

假设您指定了终端,我假设您使用的是 UNIX 变体系统。使用 -f 开关和命令行实用程序 tail 可以让您持续监控文件的结尾。您还可以使用 IBM 的inotify之类的东西,它可以监视文件更改或 dnotify(并将文件放在它自己的目录中),这通常是大多数发行版的标准配置(然后您可以调用 tail -n 1 来获取最后一行)。一旦行更改,您可以使用 Python 的 time.time() 获取自纪元以来的当前系统时间,并将其从上次更改的时间中减去,然后使用 matplotlib 绘制此差异。我假设您可以将时间分类为范围,以使自己更容易绘制图表。1 条表示小于 1 小时的更改间隔,另一个表示 1 - 5 小时之间的更改,依此类推。

如果您不想直接使用它,这里有一个 tail -f 的 Python 实现。在检测到文件更改后,您可以执行上述操作。

于 2009-04-15T01:17:25.863 回答