はい、できますが、少しだまさなければならない場合があります。基本的なプロットコマンドは次のとおりです。
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」を削除します。次に、gnuplotはusing
キーワードの後に条件付き比較を行います。最初のplotコマンドでは、最初のデータ列が1に等しいかどうかをチェックします(「disk1」-「disk」の場合)。そうである場合は、2番目の列と3番目の列をプロットします。そうでない場合は、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'
しかし、それはプロットコマンドの文字列比較が好きではありませんでした。
時間形式を正しくするために、あなたは次のようなことをしたいと思うでしょう
set xdata time
set timefmt '%Y%m%d'
set format x '%F'
プロットコマンドの前。
編集:@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'