gnuplot:带有linecolor变量的yerrorbars

时间:2012-02-07 07:01:17

标签: gnuplot

我想用不同颜色绘制yerrorbars。我可以使用以下代码绘制不同颜色的点:

reset
plot "-" using 1:2:3 with points linecolor variable
# x    y   linecolor
-4.0  -3.8   1
-3.0  -2.9   1
-2.0  -2.1   2 
-1.0  -1.2   1
 1.0   1.1   1
 2.0   2.2   2
 3.0   3.3   3 
 4.0   4.5   3
end

但我不知道如何将其扩展到yerrrorbars。当我尝试使用以下代码时,错误栏仅使用默认颜色着色。如何使用特定颜色为错误栏着色?

reset
plot "-" using 1:2:($1-$2) with yerrorbars linecolor variable
# x    y   linecolor
-4.0  -3.8   1
-3.0  -2.9   1
-2.0  -2.1   2 
-1.0  -1.2   1
 1.0   1.1   1
 2.0   2.2   2
 3.0   3.3   3 
 4.0   4.5   3
end

通过分离数据然后绘制数据,我找到了一种方法。但如果没有分离数据的方法,那将是一个更好的解决方案。

reset
plot "-" using 1:2:($1-$2) with yerrorbars lc 1, \
     "-" using 1:2:($1-$2) with yerrorbars lc 2, \
     "-" using 1:2:($1-$2) with yerrorbars lc 3

# x     y
-4.0  -3.8
-3.0  -2.9
-1.0  -1.2
 1.0   1.1
end

-2.0  -2.1
 2.0   2.2
end

 3.0   3.3
 4.0   4.5
end

2 个答案:

答案 0 :(得分:2)

“using”指定哪些列将作为命令的输入。因此,由于您的第三列是linecolor,而yerrorbars linecolor期望第四列是线条颜色,您需要使用1:2指定:($ 1- $ 2):3。所以,这是你的例子的更正版本:

reset
plot "-" using 1:2:($1-$2):3 with yerrorbars linecolor variable
# x    y   linecolor
-4.0  -3.8   1
-3.0  -2.9   1
-2.0  -2.1   2 
-1.0  -1.2   1
 1.0   1.1   1
 2.0   2.2   2
 3.0   3.3   3 
 4.0   4.5   3
end

答案 1 :(得分:0)

问题是,第三列($1 - $2)用于绘制yerrorbar(更具体地说是ydelta)。文档:

3 columns:  x  y  ydelta

需要为linecolor添加另一列。如果你想构成一些奇特的东西,你可以做类似的事情:

plot "/tmp/test.foo" using 1:2:($1-$2):(int($1)+1) with yerrorbars linecolor variable

(例如,使用第一列的整数部分并添加1)。

如果您想在两种颜色中进行选择,也可以使用三元运算符:

plot "-" using 1:2:($1  > 1 ? 1 : 3) with yerrorbars linecolor variable

(例如,如果第一列中的值大于1,则选择linecolor 1,否则选择linecolor 3)