如何绘制具有不同调色板的两个stdin数据集

时间:2019-08-29 07:54:43

标签: gnuplot

似乎没有办法在gnuplot(5.0)中定义两个不同的调色板(设置调色板1 ...)。使用stdin中的三个数据集,我可以使用三种不同的颜色来绘制它们,甚至可以使用调色板来绘制它们,而另外两种可以使用颜色来绘制。但是如何用不同的调色板绘制前两个呢?

尝试重新绘制,但令人困惑且无济于事

set xrange [0:10]
set yrange [0:10]
set cbrange [0:50]
set palette rgbformulae 10,13,3

plot '-' w l lc palette, '-' w l lc rgb 'green', '-' w l lc rgb 'blue'; 
1 2 10 
2 2 20 
3 2 30
4 2 40
5 2 50
e
1 4 10 
2 4 20 
3 4 30
4 4 40
5 4 50
e
1 1
2 2 
3 3 
4 4 
5 5

我希望有一种方法可以让我绘制两个具有两个不同的调色板的数据集,并绘制具有给定颜色的第三个数据集

1 个答案:

答案 0 :(得分:0)

我找到了两种解决方案。首先是将调色板拆分为正值,然后说负值,然后将它们分别用于前两行:

set palette defined (\
        -50 '#00aa00', -25 '#aaee00', 0 '#eeff00',\
        0 '#ffee00' , 25 '#cccc00', 50 '#ff0000') 

plot \
'-' u 1:2:($3) w l lw 5 lc palette,\
'-' u 1:2:(-$3) w l lw 5 lc palette,\
'-' w l lc rgb 'blue'; 

第二个解决方案,如@theoz指出的那样,是使用颜色函数来实现线条颜色:

r1(x) =int(255*sin(0.5*pi*x/50)) << 16
g1(x) = 0 
b1(x) = 0 

r2(x) = 0 
g2(x) = int(255*sin(0.5*pi*x/50)) << 8 
b2(x) = 0 

p1(x) = r1(x)+g1(x)+b1(x)  
p2(x) = r2(x)+g2(x)+b2(x) 

plot '-' u 1:2:(p1($3)) w l lw 4 lc rgb var,\
'-' u 1:2:(p2($3)) w l lw 4 lc rgb var,\
'-' w l lw 4 lc rgb 'blue'