生成带十进制数的变量颜色

时间:2014-09-16 09:35:38

标签: gnuplot

我创建了一个文件,其中第一列是十进制的颜色线,第二列是y轴。 x轴是行号。

0 0
1 1
2 2
...

然后我运行这个命令

plot "test.dat" u 0:2:1 pt 7 ps 1 lc rgb variable 

如图所示,输出仅包含一系列黑色到蓝色。

enter image description here

为什么?

我如何制作其他颜色?

1 个答案:

答案 0 :(得分:3)

基本上,您可以选择三个选项linecolor rgb variablelinecolor variablelinecolor palette。您使用哪一个以及如何取决于您的实际要求。

  1. 当您使用linecolor rgb variable时,最后一列中给出的值用作rgb-tuple的整数表示,即最低字节是蓝色部分,第二个最低字节是绿色部分和第三个字节是红色组件。这就是你拥有的。

    要使用此选项,您必须在数据文件中包含完整的rgb-integer值,例如

    0 13.5 # black 
    0 17 
    65280 12 # green (255 * 2**8)
    0 19.3 
    16711680 14.7 # red (255 * 2**16)
    65280 10 
    16711680 22 
    

    然后使用

    plot 'test.txt' using 0:2:1 linecolor rgb variable pt 7
    

    或者,您可以将红色,绿色和蓝色组件分别保存在一列中,并使用gnuplot函数计算rgb-integer:

    0   0   0 13.5 # black 
    0   0   0 17 
    0   255 0 12 # green
    0   0   0 19.3 
    255 0   0 14.7 # red (255 * 2**16)
    0   255 0 10 
    255 0   0 22
    

    然后使用

    rgb(r,g,b) = 65536 * int(r) + 256 * int(g) + int(b)
    plot 'test.txt' using 0:4:(rgb($1,$2,$3)) linecolor rgb variable pt 7
    
  2. 使用linecolor variable会将最后一列用作linetype索引。大索引包含在已定义的线型集合中:

    set xrange [0:1000]
    plot '+' using 1:1:0 linecolor variable pt 7
    

    enter image description here

  3. 使用linecolor palette使用最后一列作为调色板的索引:

    set xrange [0:1000]
    plot '+' using 1:1:0 linecolor palette pt 7
    

    enter image description here

  4. 您使用的变体可能取决于不同颜色的数量和颜色的分布。