代码之家  ›  专栏  ›  技术社区  ›  physicsmichael

如何在python中可视化IP地址的变化?

  •  1
  • physicsmichael  · 技术社区  · 16 年前

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

    我经常使用matplotlib。有什么想法吗?

    4 回复  |  直到 9 年前
        1
  •  4
  •   tpdi    16 年前

    将您的IP作为一个点绘制在 the xkcd internet map (或者一些放大了地图的子集,以便更好地显示不同但相邻的IP)。

    根据您拥有IP的频率绘制每个“堆叠”点,并为IP上色,使最近的点更亮,而最近的点则相应变暗。

        2
  •  1
  •   outis    16 年前

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

    对于“频率”,将时间和频率划分为每天/每周/每月的桶的标准二维(条形)图将是一种标准的方法。移动平均值也可能是信息性的。

    您可以将时间线和条形图与放大时可见的时间线以及缩小时显示的频率相结合。

    在横轴上用时间绘制一个条形图怎么样,其中每个条形图的宽度是计算机保持特定IP地址的时间长度,每个条形图的高度与宽度成反比?这也会给出一个时间和频率的关系图。

    您还可以将数据解释为 pulse density modulated 信号,就像你在超级音频CD上得到的一样。您可以绘制这个图表,甚至可以监听数据。由于IP更改事件没有明显的时间长度,因此脉冲长度将是一个可调参数。沿着类似的线,您可以将数据看作一个方波(三角形波、锯齿波和C),其中每个IP更改事件都是一个级别转换。听起来很有趣 Pure Data 项目。

        3
  •  0
  •   David Z    16 年前

    Matplotlib用户指南中有一节是关于在图表上绘制条形图以表示范围的。我自己从来没有这样做过,但这似乎适合你想要的。

        4
  •  0
  •   John T    16 年前

    假设您指定了终端,我将假设您使用的是UNIX变体系统。使用-f开关和命令行实用程序尾可以让您不断地监视文件的结尾。您还可以使用IBM的 inotify 它可以监视文件更改或数据通知(并将文件放在自己的目录中),这通常是大多数发行版的标准配置(然后可以调用tail-n 1获取最后一行)。一旦行发生更改,您可以使用python的time.time()获取当前的系统时间自epoch以来的时间,并从上次更改的时间中减去该时间,然后使用matplotlib绘制此差异。我想你可以把时间分类 使图形更容易绘制。1巴用于不到1小时的更换间隔,另一个用于1-5小时的更换间隔,依此类推。

    tail-f的python实现位于 here 如果你不想直接使用它。一旦检测到文件中的更改,就可以执行上述操作。