web-dev-qa-db-ja.com

複数の折れ線グラフをプロットするgnuplot

ls.datという名前の次のdatファイルがあります。

# Gnuplot script file for "ls"
# Version       Removed Added   Modified
8.1     0       0       0
8.4     0       0       4
8.5     2       5       9
8.6     2       7       51
8.7     2       7       51
8.8     2       7       51
8.9     2       7       51
8.10    2       7       51
8.11    2       8       112
8.12    2       8       112
8.13    2       17      175
8.17    6       33      213

私はこれでプロットしようとしています:

plot "ls.dat" using 1:2 title 'Removed' with lines,\
     "ls.dat" using 1:3 title 'Added' with lines,\
     "ls.dat" using 1:4 title 'Modified' with lines

これにより、次のグラフが生成されます。

enter image description here

私が期待しているのは、3つのラインプロットで、すべて上昇するはずですが、レートは異なります。誰もがここで何が起こっているのか見ることができますか?私はそれが非常にばかげたものでなければならないと確信しています。

19
Mike Kwan

問題はバージョン番号だと思います。 8.1-> 8.01などを作成してみてください。これにより、ポイントが正しい順序で配置されます。

または、using Xの代わりにusing 1:Xをプロットすることもできます(Xは目的の列番号です)。これにより、これらの値がy軸に、整数がx軸にプロットされます。試してください:

plot "ls.dat" using 2 title 'Removed' with lines, \
     "ls.dat" using 3 title 'Added' with lines, \
     "ls.dat" using 4 title 'Modified' with lines
26
andyras

アンディラスは完全に正しいです。ちょっとした追加、これを試してください(たとえば)

plot 'ls.dat' using 4:xtic(1)

これにより、データファイルの正しい順序が維持されますが、x軸上のバージョンticラベルも保持されます。

11
mgilson

上記の回答に加えて、以下のコマンドも機能します。私がより理にかなっているので、私はそれを投稿します。いずれの場合も「using x-value-column:y-value-column」

plot 'ls.dat' using 1:2, 'ls.dat' using 1:3, 'ls.dat' using 1:4 

上記のコマンドでは、_1がx、2がy1、3がy2、4がy3のタブ区切りデータ列を持つls.datという名前のファイルがあると想定しています。

4
tom

ls.datにセパレータが何であれ、gnuplotに指定できます:

set datafile separator "\t"
1
kukinsula