Gnuplot从数据文件列读取线条样式

时间:2014-03-20 15:03:05

标签: gnuplot

我想从文本文件中绘制一个脉冲图,如下所示:

II 5 0 0 288.40 1.3033e+14 
II 6 0 0 289.60 1.5621e+14 
II 1 4 0 302.70 3.0084e+13 
II 2 4 0 303.40 4.0230e+13 
II 1 5 1 304.40 3.4089e+13

概念上应该是plot "datafile.dat" using 5:6 w impulses ls $2

基本上,给定一组先前定义的线型,我想从第2列输入第5列和第6列中每一个绘制点的线型号。
另外,我想为每个绘图点创建一个文本框,从前四列中获取字符串。

有人知道这是否可能?

3 个答案:

答案 0 :(得分:3)

要将第二列中的数据用作线型,请使用set style increment userlinecolor variable

set style increment user
plot "datafile.dat" using 5:6:2 with impulses lc var

要放置标签,请使用labels绘图样式:

plot "datafile.dat" using 5:6:1 with labels offset 0,1

把所有东西放在一起,你有:

set style increment user
set for [i=1:6] style line i lt i
set yrange [0:*]
set offsets 0,0,graph 0.1,0
plot "datafile.dat" using 5:6:2 with impulses lc var, "" using 5:6:1 with labels offset 0,1

4.6.3的结果是:

enter image description here

答案 1 :(得分:1)

感谢上面的有用答案。它几乎解决了我的问题

我实际上尝试使用我的数据文件中的列来指定线条样式(点,正方形,三角形,无论用户定义的是什么),而不是线条颜色。有没有办法做到这一点?

此行有效:我获得了不同颜色的点(在第4列中指定),但点样式是相同的。

plot "$file" u 1:2:4 w p notitle lc var, "" using 1:2:3 with labels offset 0,1 notitle

在定义自己的样式后用lc替换ls并不起作用(ls无法variable作为选项) 我可以没有不同的线条生活,但它会更漂亮。

答案 2 :(得分:1)

您只需要替换set for [i=1:6] style line i lt i的{​​{1}}行,其中set for [i=1:6] style line i lt i pt %可以是您想要的任何类型的点