是的,它可以,但你可能不得不欺骗一下。这是基本的绘图命令:
plot "< sed 's/^disk//' data.dat" using ($1==1?$2:1/0):3 title 'disk 1', \
'' using ($1==2?$2:1/0):3 title 'disk 2'
首先,我运行数据文件sed
以从每一行中删除字符串“disk”。using
然后 gnuplot 在关键字之后进行条件比较。在第一个绘图命令中,它检查第一个数据列是否等于 1(它将用于 'disk1' - 'disk'),如果是,则绘制第二列与第三列,否则绘制 1/0 (gnuplot 忽略)。
我尝试在纯 gnuplot 中这样做:
plot 'data.dat' u ($1 eq 'disk1'?$2:1/0):3 t 'disk 1', \
'' u ($1 eq 'disk2'?$2:1/0):3 t 'disk 2'
但它不喜欢 plot 命令中的字符串比较。
要获得正确的时间格式,您需要执行类似的操作
set xdata time
set timefmt '%Y%m%d'
set format x '%F'
在 plot 命令之前。
编辑:正如@mgilson 指出的那样,strcol
如果您想要一个“纯 gnuplot”解决方案,可以使用该命令:
plot 'data.dat' u (strcol(1) eq 'disk1'?$2:1/0):3 t 'disk 1', \
'' u (strcol(1) eq 'disk2'?$2:1/0):3 t 'disk 2'