首页 > 解决方案 > 如何增加gnuplot中的颜色数量?

问题描述

我有一个包含 16 个数据块的文件,由两个空行分隔,这样我就可以通过选择每个块的索引来绘制每个块。我想做的是自动为每个数据块赋予不同的颜色,所以我尝试了:

plot "data.csv" using 2:1:-2 lc var 

问题是所有 16 个数据块没有足够的颜色,即某些数据集具有相同的颜色,而我想自动为每个数据块关联一个唯一的颜色?有没有办法做到这一点 ?

标签: matplotlibcolorsdata-visualizationgnuplotcolor-palette

解决方案


您可以通过多种方式自动或不选择颜色。

( linecoloror lc) 说明符可以采用

  • 一个整数,用于选择一种内置线型及其相关颜色,
  • 字符串形式的颜色名称,例如“blue”(在交互式 gnuplot 会话中,show colors查看可用颜色名称的完整列表),
  • 一个颜色规格(这可以采取多种形式,请做help colorspec更多细节)。

我采取了我能想到的最懒惰的方法,就是随机选择颜色!

我提供lc了以下形式的颜色规格:

rgbcolor <integer val>  # integer value representing AARRGGBB

在下面的脚本中,<integer val>随机生成在 [000000, FFFFFF] 范围内,其中 FFFFFF (base 16) = 16**6-1 (base 10) = 16777215 (base 10)。这会在 gnuplot 支持的所有可能颜色集中随机选择颜色,忽略透明度(AARRGGBB 中的 AA)。

unset key
set xrange [0:10]

seed = 4
x = rand(seed)
N = 16**6-1

plot for [i=1:16] x*i lc rgbcolor rand(0)*N

rand(0)给出一个介于 0 和 1 之间的数字,因此rand(0)*N给出一个介于 0 和 16**6-1 之间的数字。

由于种子是固定的(我选择了 4 个),所以每次运行脚本时,随机数序列和颜色集都是相同的。您可以尝试不同的种子,直到所有线条颜色看起来都足够不同。

使用上面的脚本,我得到了这个情节: 在此处输入图像描述


推荐阅读