-1

ファイル内の各データセットの列3と4をバーでプロットしたいのですが、データセットは複数の改行で識別され、以下のスクリプトに示すようにインデックスを使用して参照されます。このデータは「ラインポイント」で描くことができます。私のグラフは私のグラフのように見えますしかし、このようなグラフが必要なため、「ボックス」を使用してデータをプロットしたいと思います。

x軸には列3(1,2,3)があり、y軸には列4があります。x(1,2,3)の値ごとに、インデックス0から1つ、インデックス1から2番目の2つのバーが必要です。 。

データファイルは次のようになります。

2-100

2100 1 3.10 249

2100 2 3.41 250

2100 4 3.70 249

3-100

3100 1 3.10 252

3100 2 3.48 252

3100 4 3.72 254

2-100、3-100はタイトル「ブロックの最初の行と最初の列」として使用され、最初の4行はスクリプトで「インデックスo」として読み取られ、次の4行は「インデックス1」として読み取られます。

私が使用したスクリプト:

plot \

  "$1" index 0 using 3:4 with boxes fs solid title columnhead(1),\

  "$1" index 1 using 3:4 with boxes fs solid title columnhead(1)
4

1 に答える 1

2

データファイルを少し再フォーマットしました(少なくとも、元の質問を正しく理解していれば)-次のようになります。

2-100
2 100 1 3.10 249
2 100 2 3.41 250
2 100 4 3.70 249


3-100
3 100 1 3.10 252
3 100 2 3.48 252
3 100 4 3.72 254

次を使用して、データファイルを次のようにフォーマットできるはずですsed

sed -e '/^$/ d'           -e '/[0-9]-100/{x;p;p;x}'               datafile.dat
#     #remove all newlines  #reinsert newlines where appropriate

(これは、列見出しが常に数字(0-9)で始まり、次に「-100」であると想定しています。データファイルがもう少し複雑な場合は、もう少し面白くする必要があるかもしれません。

これは、以下を使用してプロットできます。

set yrange [0:*]
set style fill solid
plot for [i=0:1] 'test2.dat' index i u ($3+i*0.25):4:(0.25) w boxes title columnhead(1)

もちろん、forループを分割して、各プロットなどに特別なプロパティを割り当てることができます...

特別なラベルが必要な場合は、これを行うことができます

set xtics scale 0,0 format ""
set xtics ("This is at 1" 1, "this is at 2" 2, "this is at 3" 3)

プロットコマンドの前。

上記をpng(libgd)ターミナルで使用すると次のようになります。

ここに画像の説明を入力してください

于 2012-06-08T14:36:51.947 に答える