bash - 如何以编程方式绘制来自文件的连续数据集的图表?

标签 bash unix graph gnuplot

我有 memorylog.csv 文件,该文件每 1 秒就会填充一次数据。现在,我想要的是继续从 memorylog.csv 并行绘制时间线 gui 图。我怎样才能做到这一点?我想使用 gnuplot (或其他实用程序)以编程方式完成此操作。随着文件中新数据的不断出现,图表应该不断更新。

示例数据集:

Fri Aug  2 04:46:59 IST 2013,14576,28823,24128,2050
Fri Aug  2 04:47:00 IST 2013,14580,28823,24187,1992
Fri Aug  2 04:47:01 IST 2013,14584,28823,24245,1933
Fri Aug  2 04:47:03 IST 2013,14604,28823,24303,1875
Fri Aug  2 04:47:04 IST 2013,14636,28823,24361,1817
Fri Aug  2 04:47:05 IST 2013,14668,28823,24421,1757
Fri Aug  2 04:47:06 IST 2013,14708,28823,24479,1699

我希望时间戳值位于 x 轴,其余四个值位于 y 轴。

最佳答案

将这样的内容放入脚本Continous.gp:

plot '<tail -n 100 data'
pause 1
reread

并像gnuplot Continuous.gp一样运行它。这将每秒重新绘制最后 100 个条目。不幸的是,这将导致绘图窗口每次都会上升到显示器的前景,这可能是也可能不是您想要的。另外,您需要弄清楚如何让 gnuplot 来解释时间戳。我认为您需要以仅包含数字的方式格式化它们(尽管它可以以任何格式显示它们)。

另一种需要考虑的可能性是rrdtool。您向此工具提供数据值,它将持续运行最后一分钟、最后一小时、最后一天等的摘要(最小值、最大值、平均值)。这些在网页上以图表形式可视化。基本上,它完全符合您的要求。

关于bash - 如何以编程方式绘制来自文件的连续数据集的图表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18033798/

相关文章:

php - CentOS:在 shell 文件中找不到命令

algorithm - 从给定的节点度构造一个图

python - 用 python : How to set up the graph correctly? 切割的图

bash - 如何在 WSL 中显示当前分支(我使用 Vscode)

bash - 如果时间晚于早上 6 点,则放弃部分 bash 脚本

sockets - TCP/IP 套接字服务器并发

git - 创建 git 存储库时如何忽略所有 svn、bin 和 obj 文件夹?

c++ - boost最短路径查找算法

linux - Stream linux 逐行剪切

linux - Bash:如何在文件中保留与另一个文件中的行匹配的字段的行?