如何将字符串映射到 RGB 值?
How to map a string to a RGB value?
数据文件如下:
# ID,Value, Region
A,30,North
B,26,North
C,49,South
D,55,East
...
在这里,我想将字符串(例如,Region
)映射到一个 rgb 值,该值将用作 boxxy
的 lc
颜色。可以描述为伪代码:
if (region eq "North") {
"0x1b9e77"
} else if (region eq "South") {
"0xd95f02"
} else if (region eq "East") {
"0x7570b3"
} else {
"0xe7298a"
}
如何在 gnuplot 中实现这样的映射?这里其实就是把</code>映射成<code>using
选项中的一个十六进制字符串
您可以根据您的伪代码定义一个映射函数:
colormapper(x)=(x eq "North"?0x1b9e77:(x eq "South"?0xd95f02:(x eq"East"?0x7570b3:0xe7298a)))
之后,您可以将其应用于您的专栏。
plot 'map.dat' u 1:2:(colormapper(stringcolumn(3))) pt 7 ps 3 lc rgb variable notitle
解题关键时刻:
- 使用
x eq "North"...
因为我们比较字符串
lc rgb variable
让我们通过变量控制线条颜色(没有 rgb
你可以访问标准线条颜色)
- 使用
stringcolumn(3)
而不是
非常重要。
数据文件如下:
# ID,Value, Region
A,30,North
B,26,North
C,49,South
D,55,East
...
在这里,我想将字符串(例如,Region
)映射到一个 rgb 值,该值将用作 boxxy
的 lc
颜色。可以描述为伪代码:
if (region eq "North") {
"0x1b9e77"
} else if (region eq "South") {
"0xd95f02"
} else if (region eq "East") {
"0x7570b3"
} else {
"0xe7298a"
}
如何在 gnuplot 中实现这样的映射?这里其实就是把</code>映射成<code>using
选项中的一个十六进制字符串
您可以根据您的伪代码定义一个映射函数:
colormapper(x)=(x eq "North"?0x1b9e77:(x eq "South"?0xd95f02:(x eq"East"?0x7570b3:0xe7298a)))
之后,您可以将其应用于您的专栏。
plot 'map.dat' u 1:2:(colormapper(stringcolumn(3))) pt 7 ps 3 lc rgb variable notitle
解题关键时刻:
- 使用
x eq "North"...
因为我们比较字符串 lc rgb variable
让我们通过变量控制线条颜色(没有rgb
你可以访问标准线条颜色)- 使用
stringcolumn(3)
而不是非常重要。