Gnuplot 1D图

西伯利亚史洛斯

我有一个沿x轴的粒子位置的文本文件,该文件在每次碰撞后都会改变。示例数据。

0   7.5 10  30  30  40  
0   9.375   10  32.5    40  40  
0   10  10  33.3333 36.6667 40  
0   10.25   10.75   34  34  40  
0   11.0938 13.2812 28.75   40  40  

我目前正在尝试使用gnu plot绘制数据。我想要做的是沿x轴放置这些点,但是我不想一次绘制整个文件,而是希望gnu图一次绘制一行。此外,因此数据是可识别的,我试图将这些点绘制成大的标记而不是点。我正在努力做到这一点,任何帮助将不胜感激。

斯伯

我认为您不必使用来转置数据awk,因为每一行已经包含单个粒子的数据。

因此,基于DragonHu的代码,我有以下内容: 在此处输入图片说明

为了生成该图,我还添加了连接点的线。另外,我使用了特殊的列号0,它仅给出了数据文件中的行号,从0开始。

另一个技巧:使用反斜杠\,您可以将命令拆分为多行。这是我使用的绘图命令:

plot "particle.dat" using 1:0 with points linetype 1 pointtype 7 pointsize 3 title "particle 1",\
 "" u 1:0 notitle w l lt 1,\
 "" u 2:0 w p lt 2 pt 7 ps 3 t "particle 2", \
 "" u 2:0 notitle  w l lt 2,\
 "" u 3:0 w p lt 3 pt 7 ps 3 t "particle 3", \
 "" u 3:0 notitle  w l lt 3,\
 "" u 4:0 w p lt 4 pt 7 ps 3 t "particle 4", \
 "" u 4:0 notitle  w l lt 4,\
 "" u 5:0 w p lt 5 pt 7 ps 3 t "particle 5",\
 "" u 5:0 notitle  w l lt 5

不过,这还不是答案,因为问题是一次绘制一组点。这可以通过以下代码来实现。它生成了五个单独的图,我将其转储到动画gif图中:

 set key center

 set yrange[0:1]
 set xrange[0:40]

 set terminal gif size 600, 200 animate delay 100

 set output "animated.gif"
 do for [n=0:4] {
     set title sprintf("Lineno. %d", n)

     plot "particle.dat" every ::n::n  using 1:(0) with points pointtype 7 pointsize 3 title "particle 1",\
     "" every ::n::n  u 2:(0) w p pt 7 ps 3 t "particle 2", \
     "" every ::n::n  u 3:(0) w p pt 7 ps 3 t "particle 3", \
     "" every ::n::n  u 4:(0) w p pt 7 ps 3 t "particle 4", \
     "" every ::n::n  u 5:(0) w p pt 7 ps 3 t "particle 5",\


 }
 unset output

如果应创建单个图像,则可以通过

 set terminal ongcairo 
 do for [n=0:4] {
     set title sprintf("Lineno. %d", n)
     set output sprintf("PictureNumber_%d",n)

     plot ...
     unset output


 }

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章