我有以下数据文件:
#X1 y1 x2 y2 Number
123 567 798 900 1
788 900 87 89 2
....
我使用以下命令
绘制图表plot '~/Desktop/pointcolor.txt' using 1:2:($3-$1):($4-$2):5 with vectors palette nohead notitle
这是结果。
正如你在上面的图片中看到的那样,结果是压缩的,所以我想在数据文件中每10行绘制一行相同的数字。
EDIT1:
我尝试@ewcz解决方案,如下:
stat="0 0 0 0 0 0 0" # How should I define array as [gnuplot][2] didn't support it?
plot "< awk '{if(( (stat[$5]++)%10==0 )) print}'~/Desktop/pointt.txt" using 1:2:($3-$1):($4-$2):5 with vectors palette nohead notitle
但是我收到了这个错误:
gnuplot> load "gnuplot.cmd"
awk: line 1: syntax error at or near
gnuplot> plot "< awk '{if(( (stat[$5]++)%10==0 )) print}'~/Desktop/pointcolor.txt" using 1:2:($3-$1):($4-$2):5 with vectors palette nohead notitle
^
"gnuplot.cmd", line 6: warning: Skipping data file with no valid points
gnuplot> plot "< awk '{if(( (stat[$5]++)%10==0 )) print}'~/Desktop/pointcolor.txt" using 1:2:($3-$1):($4-$2):5 with vectors palette nohead notitle
^
"gnuplot.cmd", line 6: x range is invalid
EDIT2:
解决方案:
plot "< awk '{if((stat[$5]++)%10==0) print}' ~/Desktop/pointt.txt" using 1:2:($3-$1):($4-$2):5 with vectors palette nohead notitle
答案 0 :(得分:2)
为了实现这一点,必须使用(最有可能)对输入进行某种预处理。幸运的是,Gnuplot允许以直接的方式绘制命令的结果。在您的情况下,可以将plot命令修改为:
plot "< gawk '{if((stat[$5]++)%10==0) print;}' ~/Desktop/pointcolor.txt" ...
这里,行的id(基于第五列)存储在数组stat
中。如果此id可被10
整除,则打印该行,从而绘制(即,丢弃其他输入行)。