我有一个文本文件如下:
0.0120363241833/ 200497.697562
0.0152237370833/ 200496.992937
0.0181834776333/ 200496.122072
0.0211432181833/ 200495.303516
0.0241029587333/ 200494.602714
0.0270626992833/ 200493.73507
0.0300224398333/ 200493.033097
0.0332098527333/ 200492.167099
0.0361695932833/ 200491.352509
0.0391293338333/ 200490.603494
0.0420890743833/ 200489.842834
0.0450488149333/ 200489.147658
所以我想要读取每两个连续点并画出通过它们的线。 我做的是:
do for [i=1:12]{
t_0= awk 'NR==i {print $1}' "../graph1.txt"
t_1= awk 'NR==$1+i {print $1}' "../graph1.txt"
p_0= awk 'NR==i {print $2}' "../graph1.txt"
p_1= awk 'NR==i+1 {print $2}' "../graph1.txt"
m= (p_1-p_0)/(t_0-t_1)
f(x) = m*(x-t_0)+p_0
plot f(x)
}
但它不起作用,任何人都可以给我建议去做吗?
答案 0 :(得分:0)
如果你摆脱/
并每隔两行添加一个空行:
0.0120363241833 200497.697562
0.0152237370833 200496.992937
0.0181834776333 200496.122072
0.0211432181833 200495.303516
0.0241029587333 200494.602714
0.0270626992833 200493.73507
...
然后一个简单的
plot 'data.dat' w l
会做你想要的。
答案 1 :(得分:0)
这里不需要循环。您可以使用awk
将数据拆分为多对,并使用with lines
,如下所示:
plot '<awk -F/ ''NR%2{print ""}{print $1,$2}'' ../graph1.txt' with lines
-F
切换到awk指定输入字段分隔符(正斜杠)。第一个awk
块每两行打印一个空行。第二列打印两列,由默认输出字段分隔符(单个空格)分隔。
您还可以更改gnuplot中的数据文件分隔符,从而缩短awk脚本:
set datafile separator '/'
plot '<awk ''NR%2{print ""}1'' ../graph1.txt' with lines
这里,awk命令末尾的1
告诉awk执行默认操作,即打印整行。
无论哪种方式,这都是你得到的: