gnuplot:如何更改丢失数据的线型?

时间:2016-02-10 10:26:59

标签: gnuplot

默认情况下,gnuplot用直线替换曲线,缺少数据。有没有办法改变这个范围的线型?例如。整条曲线用连续线打印,而缺失的数据用虚线代替?

1 个答案:

答案 0 :(得分:1)

绘制用虚线标记缺失数据的行。

set datafile missing "?"
set term wxt dashed
plot "1.txt" using ($1):($2) with lines title "line", "<grep -A1 -B1 '?' 1.txt" w lines lt 2 lc 1 title "missing"

:~$ cat 1.txt
1 2
2 3
3 9
4 ?
5 6
6 7

说明:

将缺失的数据标记为?

using ($1):($2)会遗漏错过的数据(图中的空格)。

执行grep选择一系列数据,包括-A1之前的一行和-B1 ?之后的一行,这是用dashed行绘制的(lt 2

The plot

(评论时更新)

用虚线绘制多个标记缺失数据的列。

:~$ cat 1.txt
1 2 3
2 3 ?
3 9 5
4 ? 2
5 6 7
6 7 4

将最后gnuplot命令更改为:

plot for [i=1:2] "1.txt" using ($1):(column(i+1)) with lines lt 1 lc i title "line".i, for [i=1:2] "<awk -v u=$((".i."+1)) '{printf $1\" \";print $u}' 1.txt | grep -A1 -B1 '?'" using 1:2 w lines lt 2 lc i title "missing".i

Multiple lines

说明:

for [i=1:2]gnuplot次迭代(循环),两次(带三列的文件)。将2更改为column count - 1

要评论的另一件事是"<awk -v u=$((".i."+1)) '{printf $1\" \";print $u}' ...":这里我们在""中包含shell命令,并将字符串与.连接起来
这是一种将gnuplot i变量传递给执行的shell的方法 - 我们将一个字符串与awk命令的第一部分和i以及{{{}的第二部分连接起来。 1}}命令。

我们每次都会打印到文件列:第一个 - awkprintf $1 st(又名i+1&#39; th,我们将其作为参数传递给{{ 1}})。 u只是一个空格,双引号应该被转义。