如何将字符串映射到 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 值,该值将用作 boxxylc 颜色。可以描述为伪代码:

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) 而不是 非常重要。