gnuplot:在GIF终端中使用3D圆圈查看与角度相关的颜色

gnuplot:在GIF终端中使用3D圆圈查看与角度相关的颜色,gnuplot,animated-gif,Gnuplot,Animated Gif,使用gnuplot 5.4(Win7),我尝试在3D中设置圆的动画,基本上是的动画版本 测试数据$data包含从0x0000000到0xffffff的随机x、y、z坐标、随机大小和随机颜色。创建动画GIF时,圆圈会根据视角改变颜色 据我所知,GIF限制为256色,因此很明显,并非所有从0x0000000到0xffffff的颜色都可以显示。 我希望gnuplot以某种方式采用最接近的颜色并坚持使用它。 然而,我完全没有想到圆圈的颜色会随着角度的变化而变化 为什么会这样?如何解决这个问题 代码: #

使用gnuplot 5.4(Win7),我尝试在3D中设置圆的动画,基本上是的动画版本

测试数据
$data
包含从
0x0000000
0xffffff
的随机x、y、z坐标、随机大小和随机颜色。创建动画GIF时,圆圈会根据视角改变颜色

据我所知,GIF限制为256色,因此很明显,并非所有从
0x0000000
0xffffff
的颜色都可以显示。 我希望gnuplot以某种方式采用最接近的颜色并坚持使用它。 然而,我完全没有想到圆圈的颜色会随着角度的变化而变化

为什么会这样?如何解决这个问题

代码:

### animated plot with circles in 3D (only for gnuplot >=5.4)
reset session

set term gif size 400,400 animate delay 30 optimize
set output "WithCircles3D.gif"

# create some test data
set print $Data
    do for [i=1:100] {
        print sprintf("%g %g %g %g %g", rand(0), rand(0), rand(0), rand(0)*0.02+0.02, int(rand(0)*0xffffff))
    }
set print

set view equal xyz
set xyplane at 0
set border 4095
set xtics 0.2
set ytics 0.2
set ztics 0.2
set style fill solid 1.0

do for [a=5:360:10] {
    set view 60,a,1.25
    splot $Data u 1:2:3:4:5 w circles lc rgb var notitle
}
set output
### end of code
结果:

### animated plot with circles in 3D (only for gnuplot >=5.4)
reset session

set term gif size 400,400 animate delay 30 optimize
set output "WithCircles3D.gif"

# create some test data
set print $Data
    do for [i=1:100] {
        print sprintf("%g %g %g %g %g", rand(0), rand(0), rand(0), rand(0)*0.02+0.02, int(rand(0)*0xffffff))
    }
set print

set view equal xyz
set xyplane at 0
set border 4095
set xtics 0.2
set ytics 0.2
set ztics 0.2
set style fill solid 1.0

do for [a=5:360:10] {
    set view 60,a,1.25
    splot $Data u 1:2:3:4:5 w circles lc rgb var notitle
}
set output
### end of code

结果2:(使用
术语pngcairo
导出单个PNG帧时,会设置不同的随机集,并将它们与其他一些软件一起作为动画GIF。)


我认为解决办法是不要使用“优化”选项。它依赖于上游支持(在libgd中),这些支持多年来一直不可靠,如果不是彻底破坏的话。也许我们应该反对gnuplot选项,或者干脆将其删除


如果删除该关键字,您显示的示例将正常工作,对吗?

对于100个圆圈,我认为不会超过256种颜色。如果从“设置终端gif…”中删除“优化”,则可以复制结果2。我怀疑这是一个与“优化”选项相关的错误。@binzo,argh,对了,就是这样。谢谢每个帧将自行优化。因此,每个帧都有一个优化的256色调色板。然后,36个不同颜色的帧将简单地放在一起。你想把这个作为回答,这样我就可以接受了吗?对不起。我相信即使我像你们一样使用优化,结果2也应该被复制。所以,我对这个问题没有正确的答案。@binzo,好吧,好吧。。。这就是gnuplot help为
help gif
和“优化”所说的:整个动画使用单一颜色贴图。这要求在动画的任何帧中使用的所有颜色都已在第一帧中定义。感谢您的澄清。是的,当我删除选项
optimize
时,我得到了正确的外观结果。然而,我也没有得到
优化的第二个目的:可能减少文件大小。那么,我必须使用一个单独的GIF优化器。