完全忽略Gnuplot中的一些数据行

完全忽略Gnuplot中的一些数据行,gnuplot,pivot-table,Gnuplot,Pivot Table,我想用Gnuplot绘制一种数据透视图。 所以我需要忽略文件中的一些数据行。 我尝试了以下方法: unset key set xtics font "Times-Roman, 5" set ytics font "Times-Roman, 5" set multiplot layout 4,3 #title "Multiplots\n" plot [7:50][0:1] 'forStackoverGnuplot.txt' using 1:($2==0?($3==4?$4:NaN):Na

我想用Gnuplot绘制一种数据透视图。 所以我需要忽略文件中的一些数据行。 我尝试了以下方法:

unset key

set xtics font "Times-Roman, 5" 
set ytics font "Times-Roman, 5" 

set multiplot layout 4,3 #title "Multiplots\n"

plot [7:50][0:1] 'forStackoverGnuplot.txt' using 1:($2==0?($3==4?$4:NaN):NaN) with lines ti '4'
plot [7:50][0:1] 'forStackoverGnuplot.txt' using 1:($2==0?($3==4?$4:"fe"):"fe") with lines ti '4'
数据文件:

20  0   5   0.668593155
7   0   4   0.885223087
20  0   5   0.668593155
10  0   4   0.92239289
20  0   5   0.668593155
20  0   4   0.834947746
30  0   4   0.693726036
50  0   4   0.47169919
但我得到:


这不是我期望的结果。我能做什么?我想让数据线交错。

基本上,
gnuplot
区分丢失和无效的数据点,请参见示例

如果您有一个未定义的点(如
NaN
1/0
),绘图线将中断。要实现这一点,您需要设置
datafile missing
。但是,如果您使用语句对
中的某些内容进行求值,那么这就不起作用了,因为对于“未定义的”“缺少”选项来说已经太晚了(选择列,例如使用
使用1:4即可)。所以声明

set datafile missing '?'
plot 'forStackoverGnuplot.txt' using 1:(($2==0 && $3==4) ? $4 : '?')
不起作用

相反,您必须从外部筛选数据,并在打印受影响的行之前删除这些行:

unset key
set style data linespoints

set multiplot layout 1,2 

plot [7:50][0:1] 'forStackoverGnuplot.txt' using 1:(($2==0 && $3==4) ? $4 : 1/0)

filter = '< awk ''{ if ($2 == 0 && $3 == 4) print $1, $2, $3, $4}'' '
plot [7:50][0:1] filter.' forStackoverGnuplot.txt' using 1:4

unset multiplot
unset键
设置样式数据线点
设置多点布局1,2
使用1:($2==0&$3==4)$4:1/0)绘制[7:50][0:1]“forStackoverGnuplot.txt”
过滤器=“
这使得:

在左图中,绘制了点,但没有线连接,因为它们之间存在“无效”点