使用 gnuplot 绘制具有不同连续颜色的单条曲线
Plot one single curve with different successive colors with gnuplot
我想使用 gnuplot 绘制一个数据集,信号与时间的关系(比方说色谱图),曲线的选定区域(比方说峰)具有不同的颜色,但我不确定这是否可能或不是。
到目前为止我尝试的是这样的:
plot [2:4.6] [0:100] 'data.csv' using 1:2 with lines lt 1,\
[4.6:4.7] [0:100] 'data.csv' using 1:2 with lines lt 2,\
[4.7:6] [0:100] 'data.csv' using 1:2 with lines lt 3
但这似乎不起作用,因为我只收到 'invalid expression' 消息。
使用linecolor variable
动态指定从哪种线型取颜色:
lt(x) = (x >= 4.7 ? 3 : (x >= 4.6 ? 2 : 1))
plot 'data.csv' using 1:2:(lt()) linecolor variable
虽然 Christoph answer 提出的方法适用于有限数量的颜色变化,但在我的情况下设置起来可能会很长且复杂,因为我的真实数据集会有很多峰值和很多颜色变化。
我根据这个问题找到了一个更好的 gnuplot: yerrorbars with linecolor variable,它只是使用第三列(可以简单地使用电子表格添加)来使用 gnuplot 代码设置每个数据点的颜色:
plot [2:6] [0:100] 'data.csv' using 1:2:3 linecolor variable with lines notitle
我想使用 gnuplot 绘制一个数据集,信号与时间的关系(比方说色谱图),曲线的选定区域(比方说峰)具有不同的颜色,但我不确定这是否可能或不是。 到目前为止我尝试的是这样的:
plot [2:4.6] [0:100] 'data.csv' using 1:2 with lines lt 1,\
[4.6:4.7] [0:100] 'data.csv' using 1:2 with lines lt 2,\
[4.7:6] [0:100] 'data.csv' using 1:2 with lines lt 3
但这似乎不起作用,因为我只收到 'invalid expression' 消息。
使用linecolor variable
动态指定从哪种线型取颜色:
lt(x) = (x >= 4.7 ? 3 : (x >= 4.6 ? 2 : 1))
plot 'data.csv' using 1:2:(lt()) linecolor variable
虽然 Christoph answer 提出的方法适用于有限数量的颜色变化,但在我的情况下设置起来可能会很长且复杂,因为我的真实数据集会有很多峰值和很多颜色变化。
我根据这个问题找到了一个更好的 gnuplot: yerrorbars with linecolor variable,它只是使用第三列(可以简单地使用电子表格添加)来使用 gnuplot 代码设置每个数据点的颜色:
plot [2:6] [0:100] 'data.csv' using 1:2:3 linecolor variable with lines notitle