使用大数据文件的Gnuplot生成.png图像

使用大数据文件的Gnuplot生成.png图像,gnuplot,Gnuplot,我有20 GB到50 GB的数据文件。我想用这些文件来画情节,我后来用这些文件来制作小视频。我的Gnuplot脚本如下所示: unset xtics unset ytics unset key unset border set xrange [0:12.8] set yrange [0:7.2] set cbrange [0:1] set size ratio -1 set term png file = "hugeDataFile.dat" sizeX = 1280 sizeY = 720

我有20 GB到50 GB的数据文件。我想用这些文件来画情节,我后来用这些文件来制作小视频。我的Gnuplot脚本如下所示:

unset xtics
unset ytics
unset key
unset border
set xrange [0:12.8]
set yrange [0:7.2]
set cbrange [0:1]
set size ratio -1
set term png

file = "hugeDataFile.dat"

sizeX = 1280
sizeY = 720
lines = sizeX*sizeY
numberOfImages = 1500 

do for [i=1:numberOfImages]{
    set terminal png size sizeX, sizeY
    set output sprintf('%05d.png', i)
    start = (i-1)*lines+1
    end = i*lines
    plot file every ::start::end u 1:2:3 pt 5 ps 0.4 pal
}

问题是,从一个31 GB的数据文件中绘制这些1500.png图像需要48个多小时。有没有办法加快这一进程?我可以提高Gnuplot脚本的效率吗?

您分析了运行情况吗?这是使用系统上所有可用的CPU,还是仅使用100%的1个CPU?如果是后者,那么有一些unix/linux技术和bash脚本,允许您运行多个gnuplot进程,以使用任何/所有可用的CPU,这些CPU应将运行时除以numOfAvailCPUS。(对不起,我对gnuplot了解不够,无法在内部提供任何修复)。祝你好运。把每一点都画出来对你来说重要吗?我不认为有人能分辨出这样大的文件是用每一个点还是每一个,比如说,第十个点绘制的。尝试使用
每隔N::start::end
@MichaelO绘制一次。每个绘图包含1280 x 720个点。如果我按照你的建议做了
N=2
,情节就不好看了。@Samuel然后试着按照@Sheller的建议做,创建几个开头和结尾不同的gnuplot脚本,例如,
为[I=1:500]
为[I=501:1000]
执行,我同意上面关于创建几个gnuplot脚本以提高效率的评论。你所做的不是串行过程,对吗?没有绘图依赖于要创建的上一个绘图,因此您应该以任何方式并行化此绘图。此外,在过去,我遇到过gnuplot运行缓慢的问题,因为实际输入的数据文件非常大,而且加载部分需要时间。为此,您还可以设置一个bash脚本(甚至在gnuplot中)将50GB的文件切成小块,然后运行几个gnuplot脚本。希望这有帮助!