gpt4 book ai didi

performance - 将大数据集绘制为动画时 gnuplot 速度较慢

转载 作者:行者123 更新时间:2023-12-04 02:39:50 24 4
gpt4 key购买 nike

我正在尝试使用如下脚本从大文本文件中绘制大量数据(1000 个粒子的位置)的“动画”图:

set terminal wxt size 1000,600
k=999999
N = 999
do for [i=0:k]{
plot for [j=0:N-1] "pos.txt" using 2*j+1:2*j+2 every ::2*i+1::2*i+1 ls 1 pt 7 ps 2 notitle

在文件中,每一行都有我想绘制的点的特定时间的坐标 X 和 Y。我正在使用 every绘制每行中的所有数据一次,然后移动到下一行。

输出是这样的(1000 个粒子移动) enter image description here

然而,绘图太慢了,我不知道我能做些什么来让它更快地绘图。它每 5 秒或更长时间绘制一行。该文件权重一些 MB。我应该更换终端吗?还是我存储数据的方式?我认为 gnuplot 加载大文件时可能会出现问题。
一些粒子在模拟中消失,所以我也收到错误 line 14: warning: Skipping data file with no valid points当指数 j (well 2j+1) 超过了粒子的数量,但我试着让它每次都读取粒子的数量,而且速度更慢。非常感谢。

最佳答案

我怀疑每次绘图时 gnuplot 都在读取整个文件,与读取有问题的行相反,然后是下一行,然后是下一行,等等。一种可能的策略是将您的粒子轨迹分成不同的文件,但特别是它可以帮助删除 plot for只需一个 plot加上 every 的块选择,这里不是为粒子选择列,而是在同一块中具有相同时间步长的粒子位置。

现在你的数据看起来像这样:

x1 y1 x2 y2 x3 y3 # Time step 1
x1 y1 x2 y2 x3 y3 # Time step 2

并且 gnuplot 需要为每个时间步和粒子读取一次文件。如果您按如下方式构建文件(注意块之间的空行):
# Time step 1
x1 y1
x2 y2
x3 y3

# Time step 2
x1 y1
x2 y2
x3 y3

那么你就不需要 plot for , 而只是通过在 every 中插入一个额外的分号来选择包含所有粒子的相应块:
set terminal wxt size 1000,600
k=999999
#N = 999 you don't need this anymore!
do for [i=0:k] {
plot "pos.txt" every :::i::i
}

上面的代码为每个时间步读取文件,而不是每个时间步和粒子,并一次绘制所有粒子。

关于performance - 将大数据集绘制为动画时 gnuplot 速度较慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30853607/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com