我想用不同颜色绘制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
答案 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)