HSV(色调、饱和度、值)模型中的Gnuplot线条颜色

HSV(色调、饱和度、值)模型中的Gnuplot线条颜色,gnuplot,Gnuplot,我正在使用Gnuplot来绘制这样一个简单的函数 plot cos(x) lc rgb "red" 如何使用HSV模型通过提供色调、饱和度和值(亮度)来指定线条颜色。在gnuplot 5.0中,我们可以使用hsv2rgb函数将HSV值转换为rgb(在本文后面,我们将为早期版本编写此函数)。此函数接受范围为0-1的所有三个参数,并返回一个rgb整数 证明这一点,我们可以做到 set samples 100 set xrange[0:10] set style fill solid unset k

我正在使用Gnuplot来绘制这样一个简单的函数

plot cos(x) lc rgb "red"

如何使用HSV模型通过提供色调、饱和度和值(亮度)来指定线条颜色。

在gnuplot 5.0中,我们可以使用hsv2rgb函数将HSV值转换为rgb(在本文后面,我们将为早期版本编写此函数)。此函数接受范围为0-1的所有三个参数,并返回一个rgb整数

证明这一点,我们可以做到

set samples 100
set xrange[0:10]
set style fill solid
unset key
plot '+' u 1:(sin($1)):(hsv2rgb($1/10.0,1,1)) with boxes lc rgbcolor variable
产生

显示色调,以及

plot '+' u 1:(sin($1)):(colorval(120/360.0,1,$1/10.0)) with boxes lc rgbcolor variable
产生

显示值

要使用此函数选择线条颜色,我们只需执行以下操作

plot x lc rgbcolor hsv2rgb(90/360.0,0.8,0.3)
生产


在gnuplot 4.6中,此函数不存在,但我们可以使用hsv系统上的公式编写自己的函数

chroma(h,s,v) = v * s
hprime(h) = h/60.0
fmod2(x) = (x>2)?(x - 2*floor(x/2.0)):x
xprime(h,s,v) = chroma(h,s,v) * ( 1 - abs(fmod2(hprime(h)) - 1))
rprime(h2,h,s,v) = (h2<1)?chroma(h,s,v):(h2<2)?xprime(h,s,v):(h2<4)?0:(h2<5)?xprime(h,s,v):chroma(h,s,v)
gprime(h2,h,s,v) = (h2<1)?xprime(h,s,v):(h2<3)?chroma(h,s,v):(h2<4)?xprime(h,s,v):0
bprime(h2,h,s,v) = (h2<2)?0:(h2<3)?xprime(h,s,v):(h2<5)?chroma(h,s,v):xprime(h,s,v)
mprime(h,s,v) = v - chroma(h,s,v)
red(h,s,v) = rprime(hprime(h),h,s,v) + mprime(h,s,v)
green(h,s,v) = gprime(hprime(h),h,s,v) + mprime(h,s,v)
blue(h,s,v) = bprime(hprime(h),h,s,v) + mprime(h,s,v)
colorval(h,s,v) = (floor(red(h,s,v)*255)*2**16) + (floor(green(h,s,v)*255)*2**8) + floor(blue(h,s,v)*255)
hsv2rgb(h,s,v) = colorval(h*360.0,s,v)
色度(h,s,v)=v*s hprime(h)=h/60.0 fmod2(x)=(x>2)?(x-2*层(x/2.0)):x xprime(h,s,v)=色度(h,s,v)*(1-abs(fmod2(hpprime(h))-1))
rprome(h2,h,s,v)=(h2awesome:我不知道
hsv2rgb()
存在,所以这就节省了我设置自定义
调色板模型
,隐藏其
颜色框
,等等的一大堆行。