我的数据中有3列。第一个是日期。我想绘制第二列,但根据第三列中的值更改其颜色。

If 3rd column is:
     Positive:  Black
     Negative:  Red
     zero:      Yellow

这是我正在尝试的:
set palette model RGB defined ( 0 'yellow', 1 'red', 2 'black' )
plot "output2.txt" u 1:2:( $3 < 0 ? 1 : ( $3 > 0 ? 2 : 0 ) )  w lines palette axes x1y1

但是,即使第3列为负数,我也永远不会得到Red。

编辑1

我有时也会使它工作,但是在这种情况下,它可能不会:
$ cat t.txt
1 1 1000000
2 2 1000000
3 3 1000000
4 4 -1000000
5 5 -1000000
6 6 -1000000
7 7 -1000000

这是我的gnu脚本:
$ cat test.gnu
set terminal wxt size 1500,900
set style fill transparent solid 0.50 noborder
set key font ",6"
set palette model RGB defined ( 0 'yellow', 1 'red', 2 'black' )
plot "t.txt" u 1:2:( $3 < 0 ? 1 : ( $3 > 0 ? 2 : 0 ) )  w lines palette axes x1y1

这是我从cygwin来的称呼:
~/wgnuplot -e "load \"test.gnu\"" -persist

结果如下(黄线应为红色):

最佳答案

调色板中给出的值不是绝对值,但是最低的数字(此处为0)映射到cbrange的最小值,最高的数字(此处为2)映射到cb-maximum。

但是,using语句第三列中给出的值是绝对颜色值,并取决于cbrange。在您遇到问题的情况下,自动缩放将cbrange设置为[1:2],以便1给出黄色,1.5给出红色,而2提供黑色。

只需使用set cbrange [0:2]即可解决问题。

10-08 02:00