matplotlib - 如何增加gnuplot中的颜色数量?
问题描述
我有一个包含 16 个数据块的文件,由两个空行分隔,这样我就可以通过选择每个块的索引来绘制每个块。我想做的是自动为每个数据块赋予不同的颜色,所以我尝试了:
plot "data.csv" using 2:1:-2 lc var
问题是所有 16 个数据块没有足够的颜色,即某些数据集具有相同的颜色,而我想自动为每个数据块关联一个唯一的颜色?有没有办法做到这一点 ?
解决方案
您可以通过多种方式自动或不选择颜色。
( linecolor
or 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 个),所以每次运行脚本时,随机数序列和颜色集都是相同的。您可以尝试不同的种子,直到所有线条颜色看起来都足够不同。
推荐阅读
- python - py2exe制作的exe文件出现pystary错误
- powershell - Powershell 读取 zip 文件中的文件夹名称和计数文件
- javascript - 如何从markdown在javascript中创建目录解析器?
- python - 无法以 rb 重新打开 Django 文件
- azure - AKS 将 DNS 名称分配给专用 ClusterIP 地址
- python - 无法读取 null 的属性“EOL”
- powershell - 在 YAML 文件中调用 powershell 脚本
- linux - 主机操作系统上的 Laravel,虚拟机上的 Oracle 数据库无法通信
- javascript - 汗水警报仅删除第一行 asp.net core html jquery
- javascript - v12 不会删除机器人的反应,但 v13 会删除机器人的反应 (discord.js)