将颜色梯度与 Gnuplot 中的数据相匹配

Matching a Color Gradient to Data in Gnuplot

我有显示随时间变化的数据,我使用 Gnuplot 4.6 生成了以下图表:

在这里,我手动定义了 11 种线条样式,以随着“时间”的进行将颜色从红色 (#ff0000) 逐渐变为深红色 (#5f0000)。这是我的输入:

# svg
set terminal svg size 600,600 fname 'CMU Sans Serif' fsize '10'
set output 'plot.svg'

# color definitions
set style line 1 lc rgb '#ff0000' lt 1 lw 2 pt 7 # starting light red
set style line 2 lc rgb '#ef0000' lt 1 lw 2 pt 7 
set style line 3 lc rgb '#df0000' lt 1 lw 2 pt 7
set style line 4 lc rgb '#cf0000' lt 1 lw 2 pt 7
set style line 5 lc rgb '#bf0000' lt 1 lw 2 pt 7
set style line 6 lc rgb '#af0000' lt 1 lw 2 pt 7
set style line 7 lc rgb '#9f0000' lt 1 lw 2 pt 7
set style line 8 lc rgb '#8f0000' lt 1 lw 2 pt 7
set style line 9 lc rgb '#7f0000' lt 1 lw 2 pt 7
set style line 10 lc rgb '#6f0000' lt 1 lw 2 pt 7
set style line 11 lc rgb '#5f0000' lt 1 lw 2 pt 7

# visual elements
unset key
set xlabel 'x Axis'
set ylabel 'y Axis'

# plot data
plot for [n=2:11] 'data.dat' using 1:n with lines ls (n-1)

有没有更简单的方法让 Gnuplot 在绘制多条线时逐渐改变颜色?理想情况下,我希望有一个脚本可以根据来自“data.dat”文件的数据量处理任意数量的颜色渐变。

您可以例如使用根据迭代计数器计算颜色的函数

# values r, g, b, x must be in the range [0:1]
rgb(r,g,b) = (255*r*256**2 + 255*g*256 + 255*b) 
grad(x) = rgb(1 - x*0.7)
set style data lines
plot for [n=2:11] 'data.dat' using 1:2 lc rgb grad((n-2)/9.0)

或者,您可以为每条线定义渐变和select小数位置

set palette defined (0 '#5f0000', 1 '#ff0000')
set style data lines
plot for [n=2:11] 'data.dat' using 1:2 lc palette frac (n-2)/9.0