1 回答
TA贡献1775条经验 获得超11个赞
我会做这样的事情
# this function relates every type to an int, convenient for setting the plot styles
f(x) = x eq "type1"? 1: x eq "type2"? 2:0
# this tell gnuplot to ignore the result of lines not matching
set datafile missing "NaN"
# setting a nice style for every type
set style line 1 linetype 1 linewidth 2 pointtype 3 linecolor rgb "red"
set style line 2 linetype 1 linewidth 2 pointtype 3 linecolor rgb "blue"
# using a ternary operator to pick out the lines matching that type
plot for [i in "type1 type2"] 'test.dat' u (strcol(2) eq i?$3:NaN) w l ls f(i)
得到这个
如果需要,您可以for
从 plot 命令中删除并仅使用plot 'test.dat' u (strcol(2) eq "type1"?$3:NaN) w l ls 1, 'test.dat' u (strcol(2) eq "type2"?$3:NaN) w l ls 2
, 为每种类型显式绘图,并更好地控制每条绘图线的细节。
您可以制作另一个函数来为每一行添加标题,类似于f(x)
但返回每种类型的字符串而不是 int。
我还听说过使用 awk 或内部函数在 gnuplot 中进行累积和的方法,您可以在此处查看gnuplot-cumulative-column-question
添加回答
举报