新しいターミナル ウィンドウを開くたびに外部 IP アドレスを収集し、現在時刻とともにテキスト ファイルに追加する小さなスクリプトを作成しました。IP アドレスがいつ/どのくらいの頻度で変更されるかを視覚化する方法についてのアイデアを探しています。私は自宅とキャンパスの間を行き来し、スクリプトを使用してそれらを分離することができましたが、それらを別々に視覚化するとよいでしょう。
私は頻繁にmatplotlibを使用しています。何か案は?
新しいターミナル ウィンドウを開くたびに外部 IP アドレスを収集し、現在時刻とともにテキスト ファイルに追加する小さなスクリプトを作成しました。IP アドレスがいつ/どのくらいの頻度で変更されるかを視覚化する方法についてのアイデアを探しています。私は自宅とキャンパスの間を行き来し、スクリプトを使用してそれらを分離することができましたが、それらを別々に視覚化するとよいでしょう。
私は頻繁にmatplotlibを使用しています。何か案は?
IP をxkcd インターネット マップ上のポイントとしてプロットします(または、マップのサブセットをズームインして、異なるが密接に隣接する IP をより適切に表示します)。
その IP を取得した頻度に比例して各ポイントを「積み上げ」てプロットし、IP に色を付けて、最近のポイントを明るくし、最近のポイントを比例的に暗くします。
「いつ」は一次元の時系列データであり、タイムラインでよく表されます。タイムスケールが大きいと、詳細が失われる可能性がありますが、「いつ」のほとんどのプロットには、この欠陥があります。
「頻度」については、時間と頻度の標準的な 2 次元 (バー) プロットを、日/週/月ごとにバケットに分割するのが標準的な方法です。移動平均も参考になる場合があります。
タイムラインと棒グラフを組み合わせて、ズームインするとタイムラインが表示され、ズームアウトすると周波数が表示されます。
各バーの幅がコンピューターが特定の IP アドレスを保持していた時間の長さであり、各バーの高さが幅に反比例する横軸の時間の棒グラフはどうでしょうか? それはまた、いつ対どのくらいの頻度でプロットするかのプロットを提供します。
SuperAudio CD で得られるようなパルス密度変調信号としてデータを解釈することもできます。これをグラフにしたり、データを聞いたりすることもできます。IP 変更イベントには明確な時間の長さがないため、パルスの長さは調整可能なパラメーターになります。同様に、各 IP 変更イベントがレベル遷移である方形波 (三角波、鋸歯状波など) としてデータを表示することもできます。楽しいPure Dataプロジェクトのようですね。
matplotlib ユーザー ガイドには、グラフにバーを描画して範囲を表すセクションがあります。私はそれを自分でやったことがありませんが、あなたが探しているものに適しているようです.
ターミナルを指定したと仮定すると、UNIX バリアント システムを使用していると仮定します。-f スイッチをコマンド ライン ユーティリティの tail と一緒に使用すると、ファイルの終わりを常に監視できます。IBM のinotifyのようなものを使用することもできます。これは、ファイルの変更を監視したり、ほとんどのディストリビューションで通常標準になっている dnotify (およびファイルを独自のディレクトリに配置) したりできます (その後、 tail -n 1 を呼び出して最後の行を取得できます)。行が変更されたら、Python の time.time() を使用してエポック以降の現在のシステム時間を取得し、最後の変更の時間からそれを差し引いてから、matplotlib を使用してこの差をプロットできます。グラフを自分で簡単に作成できるように、時間を範囲に分類できると思います。交換間隔が 1 時間未満の場合は 1 つの棒、1 ~ 5 時間の交換の場合は別の棒など。
直接使用したくない場合は、こちらに tail -f の Python 実装があります。ファイルの変更を検出すると、上記を実行できます。