Gnuplot:如何手动为离散颜色贴图赋值

Gnuplot:如何手动为离散颜色贴图赋值,gnuplot,colormap,Gnuplot,Colormap,gnuplot中是否有任何选项可以手动分配离散颜色映射的阈值?我已经确定了范围,但是颜色范围会在它们之间自动线性调整 set cbrange [1.5:5] set palette maxcolors 4 set palette defined ( 0 '#000fff',\ 1 '#ee0000',\ 2 '#90ff70',\ 3 '#000000') 比如说,我想要[1

gnuplot中是否有任何选项可以手动分配离散颜色映射的阈值?我已经确定了范围,但是颜色范围会在它们之间自动线性调整

set cbrange [1.5:5]
set palette maxcolors 4
set palette defined ( 0 '#000fff',\
                    1 '#ee0000',\
                    2 '#90ff70',\
                    3 '#000000')
比如说,我想要[1.5,2]中的第一种颜色,[2,2.1]中的第二种颜色。。。举个例子


谢谢,这取决于你想画什么。在下面找到两个尝试。第一种是对颜色使用函数。这样做的优点是,您还可以使用透明颜色。我猜调色板中的透明颜色(还)不可能(见)。第二种方法使用调色板并将颜色范围之外的数据点重新定义为
NaN
。以下示例可能是一个起点

代码:

### palette with defined not equidistant color ranges
reset session

# create some test data
set isosamples 100
set samples 100
set table $Data
    plot '++' u 1:2:(abs($1*$2)/5+1.4) w table
unset table

myColor(n) = n<1.5 ? 0xff123456 : \
             n<2.0 ? 0x000fff : \
             n<2.1 ? 0xee0000 : \
             n<3.5 ? 0x90ff70 : \
             n<5.0 ? 0x000000 : 0xff123456

set cbrange [1.5:5]
set palette defined (1.5 "#000fff", 2.0 "#000fff", \
                     2.0 "#ee0000", 2.1 "#ee0000", \
                     2.1 "#90ff70", 3.5 "#90ff70", \
                     3.5 "#000000", 5.0 "#000000")

set size square
set multiplot layout 1,2

    plot $Data u 1:2:(myColor($3)) w p pt 5 ps 0.4 lc rgb var notitle

    plot $Data u 1:2:($3<1.5 || $3>5.0 ? NaN : $3) w image notitle

unset multiplot
### end of code
定义了非等距颜色范围的调色板 重置会话 #创建一些测试数据 将isosamples设置为100 设置样本100个 设置表$Data 绘图“++”u 1:2:(abs($1*$2)/5+1.4)w表格 未设置的表
myColor(n)=n它取决于您想要绘制的内容。在下面找到两个尝试。第一种是对颜色使用函数。这样做的优点是,您还可以使用透明颜色。我猜调色板中的透明颜色(还)不可能(见)。第二种方法使用调色板并将颜色范围之外的数据点重新定义为
NaN
。以下示例可能是一个起点

代码:

### palette with defined not equidistant color ranges
reset session

# create some test data
set isosamples 100
set samples 100
set table $Data
    plot '++' u 1:2:(abs($1*$2)/5+1.4) w table
unset table

myColor(n) = n<1.5 ? 0xff123456 : \
             n<2.0 ? 0x000fff : \
             n<2.1 ? 0xee0000 : \
             n<3.5 ? 0x90ff70 : \
             n<5.0 ? 0x000000 : 0xff123456

set cbrange [1.5:5]
set palette defined (1.5 "#000fff", 2.0 "#000fff", \
                     2.0 "#ee0000", 2.1 "#ee0000", \
                     2.1 "#90ff70", 3.5 "#90ff70", \
                     3.5 "#000000", 5.0 "#000000")

set size square
set multiplot layout 1,2

    plot $Data u 1:2:(myColor($3)) w p pt 5 ps 0.4 lc rgb var notitle

    plot $Data u 1:2:($3<1.5 || $3>5.0 ? NaN : $3) w image notitle

unset multiplot
### end of code
定义了非等距颜色范围的调色板 重置会话 #创建一些测试数据 将isosamples设置为100 设置样本100个 设置表$Data 绘图“++”u 1:2:(abs($1*$2)/5+1.4)w表格 未设置的表 霉色(n)=n