【发布时间】:2017-09-21 15:27:44
【问题描述】:
我有 10GB 的文件,其中包含数十亿个条目。它有很多列。我想将每一列绘制成不同的子图。我使用了以下 MWE:
set datafile separator ","
set terminal png
set output "a.png"
set multiplot layout 2,1 title ""
plot "camkii.dat" using 1:2 with lines
plot "camkii.dat" using 1:23 with lines
这个脚本需要几十秒。如您所见,我两次致电plot "camkii.dat" ...。我怀疑每次都会读取该文件。这不是很有效,我可能会耗尽内存。
如果我可以将文件读入某个变量(比如foo),然后使用变量 foo 绘制每个子图。类似于plot foo[1] ... 和plot foo[2] ... 等的东西。这样我只读取了一次文件。
我是否正确怀疑 gnuplot 可能会加载文件两次。如果是,将文件保存到变量中并绘制它会有所帮助吗?向 MWE 建议的更改会很棒。
【问题讨论】:
-
不,您不能缓存数据以在第二个绘图中重复使用它。如果您在数据量方面遇到问题,可以尝试使用更有效的方式来保存数据,例如 hdf5 文件格式。然后你可以使用例如
h5totxt仅提取所需的数据部分而不读取整个文件。只是猜测,尚未对此进行基准测试