gpt4 book ai didi

plot - Gnuplot : how to make a gif by plotting one block of data after the other in the same file . 数据?

转载 作者:行者123 更新时间:2023-12-04 07:13:12 26 4
gpt4 key购买 nike

我想从文件 data.dat 制作一个 gif:

   #x                     y                  z                   radius              color
#set 1
222.333710 505.354645 -2938.58545 10.0000000 1.00000000
854.180481 64.3471069 -2844.13477 12.5992117 53.0000000
-109.606003 173.377197 -2975.83960 17.0997639 55.0000000

#set 2
0.746170461 -0.868437707 -2876.14355 123.856239 2001.00000

#set 3
1.56590324E-02 6.23370660E-03 -2870.87378 129.126297 4001.00000

我想在每个时间步绘制:

使用 1:2:3:4:5 和圆圈 lc var notitle 绘制“data.dat”

对于每组。意思是在时间 1 绘制集合 1,在时间 2 绘制集合 2,依此类推。

如何绘制直到定义的线已经被问到的问题here .但是怎么可能画到一条不知道的线呢?我的想法是编写代码以绘制直到空白行,但我愿意接受任何建议。

最后,为了创建 .gif 我会写:

reset session

set term gif size 700,700 animate delay 30 optimize
set output "data.gif"

set xrange [-1000:1000]
set yrange [-1000:1000]
set zrange [-3000:-2500]

do for [a=1:3:1] {

###### code for splot

}
set output

最佳答案

如果你用两个空行分隔你的集合,你可以很容易地通过 index 找到它们(查看 help index)。如果您不知道组(或 block )的数量,您可以执行stats(查看help stats)。您将在变量 STATS_blocks 中找到 block 数(要查看所有变量类型 show var STATS)。检查以下示例作为进一步优化的起点。

注意:term gif 中的选项optimize 可能会导致错误的颜色(参见:gnuplot: viewing angle dependent colors with 3D circles in GIF terminal)因此,要么不优化所有帧,要么将所有帧导出为 PNG(例如通过 term pngcairo)并使用其他软件从中创建动画 GIF。

代码:

### create animation from unknown number of sub-blocks
reset session
set term gif size 400,400 animate delay 100
set output "SO68940970.gif"

# create some random test data
set print $Data
print "#x y z radius color
SetCount = int(rand(0)*6)+10
do for [b=1:SetCount] {
print sprintf("#set%d",b)
LineCount = int(rand(0)*5)+2
do for [a=1:LineCount] {
print sprintf("%g %g %g %g %g", \
rand(0)*2000-1000,rand(0)*2000-1000,rand(0)*500-3000, \
rand(0)*100+50, rand(0)*0xffffff)
}
if (b<SetCount) { print ""; print "" } # two empty lines
}
set print

stats $Data u 1 nooutput
N = STATS_blocks
print N

set xrange [-1000:1000]
set yrange [-1000:1000]
set zrange [-3000:-2500]
set ztics 250
set view equal xyz

set style fill solid 1.0
do for [i=1:N] {
set title sprintf("Set %d",i)
splot $Data u 1:2:3:4:5 index i-1 w circles lc rgb var notitle
}
set output
### end of code

结果:

enter image description here

关于plot - Gnuplot : how to make a gif by plotting one block of data after the other in the same file . 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68940970/

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