我的数据中有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]
即可解决问题。