Gnuplot 用十进制数产生可变颜色
我创建了一个文件,第一列是十进制的颜色线,第二列是y轴。x轴是行号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。您使用哪一种以及如何使用取决于您的实际需求 当您使用
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'的转换,我想我明白你说的了。对于第一个问题(第一个图),您当前的答案是正确的。因此,我将删除第二部分,并在必要时创建一个新的帖子。再次感谢。