2012-01-27 5 views
1

gnuplotを使ってCSVファイルを処理する際に助けが必要です。Gnuplot、CSV、別個のラベルのみ?

a,1002 
b,612 
b,893 
b,361 
b,932 
b,483 
b,899 
b,614 
c,722 
d,1038 
d,1580 

私はそれがX値として、Y値のために行番号を2列目を使用したい: 私のCSVファイルは次のようになります。これは簡単に行えます。

私は最初の列をxticsラベルにすることができましたが、Google-ingの時間が経ってから、gnuplotにラベルを1回だけ印刷するように指示する解決策は見つかりませんでした(x軸にはラベル読めない)。

は、私のようなものが必要です:

. 
.  b 
.a ***** c 
.** ***  d **** 
.  ************ 
........................ 

をしかし、私はこれを取得しています:

. 
    . 
    . ***** 
    .**  ***   **** 
    .  ************ 
    ........................ 
    sdflksdjflksdjflksdjflkadjflksjdflkasj 

ラベルは、あまりにも、それは問題ではない軸上またはグラフの線で大丈夫でしょう。

答えて

2

あなたは、例えば、簡単なスクリプトにより、データから情報を抽出することができます

set xtics ("a" 1, "b" 2, "c" 9, "d" 10) 

を使用し、定期的ではありませんはxticsを設定するには

cut -f1 -d, data | while read name ; do 
    let line++ 
    if [[ $name != $oldname ]] ; then 
     oldname=$name 
     echo "'$name'" $line 
    fi 
done 
+0

(+1)ラベル座標の手動による計算を避けるソリューションを提供してくれてうれしいです。 – chl

+0

ありがとう!完璧! – gyorgyabraham

1

幾つかの更なる提案:

set pointsize 2.5 
set xtics ("a" 1, "b" 5, "c" 9, "d" 10.5) 
set xrange [0:12] 
plot "< cat -n aa.csv | sed -e 's/,/ /g'" using 1:3 pt 7 notitle 
も大きいための中間間隔の決意を自動化する方法を提供@choroba、によって示唆されるように不均等(X-ティックの代わりにラベルを離間

収率データセット)。 (あなたの質問に示すように、ここでaa.csvデータが含まれています。)

enter image description here

あなたは、ラベルではなく、x軸の下でよりが描画領域に表示したい場合は、あなたが

set format x "" 
で始めることができます

を入力し、上のカテゴリのいずれかのa、...、dのいずれかにある最高値の上にラベルを配置します。

関連する問題