Gnuplot:如何手动为离散颜色图分配值
Gnuplot: how to assign values for discrete colormaps manually
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(*)/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()) w p pt 5 ps 0.4 lc rgb var notitle
plot $Data u 1:2:(<1.5 || >5.0 ? NaN : ) w image notitle
unset multiplot
### end of code
结果:
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(*)/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()) w p pt 5 ps 0.4 lc rgb var notitle
plot $Data u 1:2:(<1.5 || >5.0 ? NaN : ) w image notitle
unset multiplot
### end of code
结果: