是否可以使用 gnuplot 以这种格式绘制一系列矩阵

问题描述 投票:0回答:1

我的代码当前创建一个输出,结果如下(使用示例数字)

0.0 0.0 0.0 
0.0 1.0 0.0 
0.0 0.0 0.0 
0.0 0.0 2.0 

0.0 0.0 0.0 
0.0 0.0 2.0 
0.0 0.0 0.0 
1.0 0.0 0.0 


0.0 0.0 0.0 
0.0 3.0 0.0 
0.0 0.0 0.0 
0.0 0.0 1.0 


3.0 0.0 0.0 
0.0 0.0 0.0 
1.0 0.0 2.0 
0.0 0.0 0.0 


3.0 0.0 0.0 
0.0 0.0 0.0 
1.0 0.0 2.0 
0.0 0.0 0.0 


3.0 0.0 0.0 
0.0 0.0 0.0 
1.0 0.0 2.0 
0.0 0.0 0.0 


3.0 0.0 0.0 
0.0 0.0 0.0 
1.0 0.0 2.0 
0.0 0.0 0.0

希望找到一个解决方案,如何将这些数据绘制为 3D 样图或循环显示每个矩阵的 gif(实际代码包含数百个矩阵)。如有必要,我可以更改输出格式。到目前为止我已经尝试过了

do for [i=1:7] {
plot "data.txt" matrix with image
}

以及尝试我在网站上找到的其他解决方案,但似乎没有人尝试做与我相同的事情。

如果有 gnuplot 经验的人可以帮助我,那将是一个巨大的帮助(如果这有影响的话,我正在使用 mac)

arrays matrix gnuplot heatmap animated-gif
1个回答
1
投票

我假设矩阵的所有分隔都是空行。 如果是这种情况,您可以通过

index
对矩阵进行寻址(选中
help index
)。 您可以使用
stats
(检查
help stats
)了解您拥有多少个区块。循环遍历这些块并将输出设置为
term gif animate
(选中
help gif
)。无需绘制数据块
$Data
,只需绘制您的文件即可。

仔细检查:

### plot matrices as asnimation
reset session

$Data <<EOD
0.0 0.0 0.0 
0.0 1.0 0.0 
0.0 0.0 0.0 
0.0 0.0 2.0 


0.0 0.0 0.0 
0.0 0.0 2.0 
0.0 0.0 0.0 
1.0 0.0 0.0 


0.0 0.0 0.0 
0.0 3.0 0.0 
0.0 0.0 0.0 
0.0 0.0 1.0 


3.0 0.0 0.0 
0.0 0.0 0.0 
1.0 0.0 2.0 
0.0 0.0 0.0 


3.0 0.0 0.0 
0.0 0.0 0.0 
1.0 0.0 2.0 
0.0 0.0 0.0 


3.0 0.0 0.0 
0.0 0.0 0.0 
1.0 0.0 2.0 
0.0 0.0 0.0 
EOD


stats $Data u 0 nooutput    # get the number of blocks
N = STATS_blocks

set term gif size 600,400 animate delay 30
set output "SO72250259.gif"

set size ratio -1
set cbrange [0:3]
set xrange [-0.5:2.5]
set yrange [-0.5:3.5]

do for [i=0:N-1] {
    plot $Data index i matrix w image
}
set output
### end of script

结果:

© www.soinside.com 2019 - 2024. All rights reserved.