Gnuplot 用十进制数产生可变颜色

Gnuplot 用十进制数产生可变颜色,gnuplot,Gnuplot,我创建了一个文件,第一列是十进制的颜色线,第二列是y轴。x轴是行号 0 0 1 1 2 2 ... 然后我运行这个命令 plot "test.dat" u 0:2:1 pt 7 ps 1 lc rgb variable 如图所示,输出仅包含黑色到蓝色的范围 为什么? 如何生成其他颜色?基本上,您可以在三个选项中进行选择,linecolor rgb variable,linecolor variable和linecolor palete。您使用哪一种以及如何使用取决于您的实际需求 当您使用

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

0 0
1 1
2 2
...
然后我运行这个命令

plot "test.dat" u 0:2:1 pt 7 ps 1 lc rgb variable 
如图所示,输出仅包含黑色到蓝色的范围

为什么?


如何生成其他颜色?

基本上,您可以在三个选项中进行选择,
linecolor rgb variable
linecolor variable
linecolor palete
。您使用哪一种以及如何使用取决于您的实际需求

  • 当您使用
    linecolor rgb variable
    时,最后一列中给出的值将用作rgb元组的整数表示,即最低字节为蓝色部分,第二低字节为绿色部分,第三低字节为红色部分。这就是你所拥有的

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

    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
    
    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
    
    或者,将红色、绿色和蓝色组件分别保存在一列中,并使用gnuplot函数计算rgb整数:

    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
    
    然后使用

    plot 'test.txt' using 0:2:1 linecolor rgb variable pt 7
    
    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
    
  • 使用
    linecolor变量
    将使用最后一列作为
    linetype
    索引。大索引将换行到定义的线型集:

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

  • 使用
    linecolor palette
    将最后一列用作调色板的索引:

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


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

    基本上,您可以在三个选项中进行选择,
    linecolor rgb variable
    linecolor variable
    linecolor palete
    。您使用哪一种以及如何使用取决于您的实际需求

  • 当您使用
    linecolor rgb variable
    时,最后一列中给出的值将用作rgb元组的整数表示,即最低字节为蓝色部分,第二低字节为绿色部分,第三低字节为红色部分。这就是你所拥有的

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

    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
    
    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
    
    或者,将红色、绿色和蓝色组件分别保存在一列中,并使用gnuplot函数计算rgb整数:

    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
    
    然后使用

    plot 'test.txt' using 0:2:1 linecolor rgb variable pt 7
    
    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
    
  • 使用
    linecolor变量
    将使用最后一列作为
    linetype
    索引。大索引将换行到定义的线型集:

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

  • 使用
    linecolor palette
    将最后一列用作调色板的索引:

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


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

    是的,如果您有固定的调色板,则从中选择颜色。如果您想要不同的颜色,您必须更改调色板或定义适当的线型,请参阅我编辑的答案。对不起。。。我明白你的意思。然而,这不符合我的需要。定义调色板将创建一系列颜色。第一个点是黑色,最后一个点是红色。如果您将这些方法应用于我的示例(我更新的帖子中的示例),您将看到错误的行为。我需要在我的输入文件中为颜色定义一列,以便正确地对它们进行分组/聚类。如果你分段提供信息,很难看出什么适合你的需要。我提到的三个变体基本上就是你能做的。如果无法定义合适的调色板,则应像以前一样使用
    linecolor rgb变量
    ,但必须在第一列中有正确的整数值,即红色(`=255*2**16
    ),绿色(
    =255*2**8
    )的
    16711680
    ),蓝色的
    255
    。当然,两者之间也有任何价值。或者,您可以将r、g和b值保存在前三个数据文件列中,并使用
    rgb(r、g、b)=65536*int(r)+256*int(g)+int(b)
    。。。。。。对于使用0:4:(rgb($1,$2,$3))linecolor rgb变量pt 7的
    绘图'test.txt'的转换,我想我明白你说的了。对于第一个问题(第一个图),您当前的答案是正确的。因此,我将删除第二部分,并在必要时创建一个新的帖子。再次感谢。是的,如果你有一个固定的调色板,颜色是从这里选择的。如果您想要不同的颜色,您必须更改调色板或定义适当的线型,请参阅我编辑的答案。对不起。。。我明白你的意思。然而,这不符合我的需要。定义调色板将创建一系列颜色。第一个点是黑色,最后一个点是红色。如果您将这些方法应用于我的示例(我更新的帖子中的示例),您将看到错误的行为。我需要在我的输入文件中为颜色定义一列,以便正确地对它们进行分组/聚类。如果你分段提供信息,很难看出什么适合你的需要。我提到的三个变体基本上就是你能做的。如果无法定义合适的调色板,则应像以前一样使用
    linecolor rgb变量
    ,但必须在第一列中有正确的整数值,即红色(`=255*2**16
    ),绿色(
    =255*2**8
    )的
    16711680
    ),蓝色的
    255
    。当然,两者之间也有任何价值。或者,您可以将r、g和b值保存在前三个数据文件列中,并使用
    rgb(r、g、b)=65536*int(r)+256*int(g)+int(b)
    。。。。。。对于使用0:4:(rgb($1,$2,$3))linecolor rgb变量pt 7的
    绘图'test.txt'的转换,我想我明白你说的了。对于第一个问题(第一个图),您当前的答案是正确的。因此,我将删除第二部分,并在必要时创建一个新的帖子。再次感谢。