UP

gnuplotのグラフの線の太さを変える

gnuplotが吐くepsの線幅は結構細いので太くしたい。epsファイル中
  /gnulinewidth 5.000 def
が大元の線の太さを決めているので適当に例えば
  /gnulinewidth 12.000 def
などとする。するとグラフの外枠が太くなりすぎるので、外枠に使っている線の幅は gnulinewidthの2倍、としている箇所
  /BL {stroke userlinewidth 2 mul setlinewidth ...
を2倍ではなく1.2倍
  /BL {stroke userlinewidth 1.2 mul setlinewidth ...
などとする(userlinewidthはgnulinewidthと同じと定義されている)。

before changing linewidth変更前

after changing linewidth変更後

これを自動でやってくれるrubyのスクリプト:
#!/usr/bin/ruby

if ARGV.size >= 1
  f = open(ARGV[0],"r")
  str=f.read
  f.close

  f = open(ARGV[0],"w")
  str.gsub!(/gnulinewidth 5.000 def/,"gnulinewidth 12.000 def")
  f.write(str.gsub(/BL \{stroke userlinewidth 2 mul/,"BL {stroke userlinewidth 1.2 mul"))
  f.close
else
  print "usage: gl.rb <gnuplot_eps_file_to_change_linewidth>\n"
end
これを"gl.rb"などの名前で保存(&実行許可)しておけば例えば
  > gl.rb test.eps
でepsファイル"test.eps"を書き換えてくれる。


2012/10/05 09:36:33 更新