次のようなものが欲しいですか:
plot 'datafile' u 2:3:1 with labels
...「反復せずに一度だけラベルをプロットしたい」というのが何を意味するのかよくわかりません...
一意のラベルを 1 つだけ取りたいようです。たとえば、 であるラベルは 1 つだけ0
、 であるラベルは 1 つだけなどです。簡単にするために、最初のラベルを1
小さな python スクリプトで取り上げます。
#test.py
import sys
seen = set()
with open(sys.argv[1]) as f:
for line in f:
num,rest = line.split(None,1)
if num not in seen:
seen.add(num)
sys.stdout.write(line)
これで、gnuplot でファイルをプロットできます。
plot '< python test.py yourdatafile' u 2:3:1 w labels
test.py
これは、同じ「値」を持つすべてのラベルの位置を平均するバージョンです。
import sys
from collections import defaultdict
d = defaultdict(list)
with open(sys.argv[1]) as f:
for line in f:
num,x,y = map(int,line.split())
d[num].append((x,y))
#now average
for k,v in d.items():
x,y = zip(*v)
avg_x = float(sum(x))/len(x)
avg_y = float(sum(y))/len(y)
print k,avg_x,avg_y