2008年01月19日

Inkscape

Inkscape-header-image.png

EPS ファイルを編集するソフトを探していて行き着いたのが Inkscape です。Photoshop に対する GIMP のように、Illustrator に対しては Inkscape が位置しているようです。

ちょっと使ってみた感じ、自分が使いたい用途に対してはほぼ問題がなさそうです。Tgif を使おうとして Cygwin 環境を作ろうとしたり VMware を入れたりと大変でしたが、最終的にはいいソフトを見つけることができました。

ちょっと面倒なのは、このソフトは EPS ファイルの書き出しは可能なのですが入力ができないようなので SVG という形式に変換する必要があります。SVG に関してはこちら。

この変換にはpstoedit を使っています。作業フローとしては plot data → gnuplot → EPS → pstoedit → SVG → Inkscape → EPS → pstoedit → WMF ですね。BAT ファイル経由でこの辺は怠惰に対応です。

eps2wmf.bat
"C:\Program Files\pstoedit\pstoedit.exe" -f emf %1 %1.wmf
eps2svg.bat
"C:\Program Files\pstoedit\pstoedit.exe" -f plot-svg %1 %1.svg

後はちゃんとプロットデータを作る部分。ポストエフェクトが可能になったので前工程が非常に楽になる気がします。

Inkscape.png


投稿者 napier : 11:43 | トラックバック


2007年12月28日

かぐやの軌道生データ

/.J の「かぐやの軌道生データが公開される」でかぐやの軌道をプロットされている方がいました。わかっている方はすばやいですねぇ。

データは JAXA のサイトのこちらのページ。“月周回衛星「かぐや(SELENE)」クリティカルフェーズ軌道暦 (lzh形式)” というリンクです。

このプロットは /.J の plot そのものです。

kaguya.plt

set size square
set ticslevel 0

set xrange [-450000:450000]
set yrange [-450000:450000]
set zrange [-450000:450000]

splot '0709140216-0709142013.txt' u 2:3:4 every ::15 w l lt 1 notitle,\
      '0709142013-0709152300.txt' u 2:3:4 every ::15 w l lt 1 notitle,\
      '0709140216-0709142013.txt' u 2:3:4 every ::15 w l lt 1 notitle,\
      '0709142013-0709152300.txt' u 2:3:4 every ::15 w l lt 1 notitle,\
      '0709152300-0709180000.txt' u 2:3:4 every ::15 w l lt 1 notitle,\
      '0709180000-0709190056.txt' u 2:3:4 every ::15 w l lt 1 notitle,\
      '0709190056-0709200000.txt' u 2:3:4 every ::15 w l lt 1 notitle,\
      '0709200000-0709210100.txt' u 2:3:4 every ::15 w l lt 1 notitle,\
      '0709210100-0709220100.txt' u 2:3:4 every ::15 w l lt 1 notitle,\
      '0709220100-0709240000.txt' u 2:3:4 every ::15 w l lt 1 notitle,\
      '0709240000-0709250100.txt' u 2:3:4 every ::15 w l lt 1 notitle,\
      '0709250100-0709260000.txt' u 2:3:4 every ::15 w l lt 1 notitle,\
      '0709260000-0709280010.txt' u 2:3:4 every ::15 w l lt 1 notitle,\
      '0709280000-0709290258.txt' u 2:3:4 every ::15 w l lt 1 notitle,\
      '0709290258-0710020000.txt' u 2:3:4 every ::15 w l lt 1 notitle,\
      '0710020000-0710040000.txt' u 2:3:4 every ::15 w l lt 1 notitle,\
      '0710040000-0710052309.txt' u 2:3:4 every ::15 w l lt 1 notitle,\
      '0710052309-0710070000.txt' u 2:3:4 every ::15 w l lt 1 notitle,\
      '0710070000-0710081200.txt' u 2:3:4 every ::15 w l lt 1 notitle,\
      '0710081200-0710090042.txt' u 2:3:4 every ::15 w l lt 1 notitle,\
      '0710090042-0710101900.txt' u 2:3:4 every ::15 w l lt 1 notitle,\
      '0710101900-0710112200.txt' u 2:3:4 every ::15 w l lt 1 notitle,\
      '0710112200-0710130000.txt' u 2:3:4 every ::15 w l lt 1 notitle,\
      '0710130000-0710140436.txt' u 2:3:4 every ::15 w l lt 1 notitle,\
      '0710140436-0710150452.txt' u 2:3:4 every ::15 w l lt 1 notitle,\
      '0710150452-0710170000.txt' u 2:3:4 every ::15 w l lt 1 notitle,\
      '0710170000-0710171200.txt' u 2:3:4 every ::15 w l lt 1 notitle,\
      '0710171200-0710180752.txt' u 2:3:4 every ::15 w l lt 1 notitle,\
      '0710180752-0710191900.txt' u 2:3:4 every ::15 w l lt 1 ti "Location of KAGUYA"

コマンドの説明としては、u 2:3:4 で座標の指定、every ::15 でファイルの 15 行目からデータ開始という指定、といったところでしょうか。


投稿者 napier : 20:02 | トラックバック


2007年11月28日

陰線消去ミス?

新調した Vista マシンに環境設定をして、知らないうちに 2000 の環境と異なった gnuplot version 4.2.2 を使っていました。 2000 で使っていたのは version 4.0 です。

忙しさも峠を越したのでそろそろと・・・と思い、いろいろ実験をし始めたのですが、どうも 4.2.2 には陰線消去が失敗するようです。適当にサンプルを探していたときに以下のサイトを見つけて、

そこにあった "3D-Plot einer Funktion mit Gitternetzlinien" をプロットしてみたところ、4.0 と 4.2.2 で次のような差が見られます。4.2.2 では極大部周辺で陰線が消えきっておらず、ノイズのように緑の点が見えます。

ver. 4.0ver. 4.2.2

ちなみに plt は以下のように png ファイルへの書き出しを追加しています。

set hidden3d
set isosamples 40
set xrange [-2.5:2.5]
set yrange [-2.5:2.5]
set zrange [0.0:5.0]
set xtics 0.5
set ytics 1.0
set ztics 0.5
set view 40,50,1.0,1.5
f(x,y)=(x**2+2.5*y**2-y)*exp(1-(x**2+y**2))
set term png
set out "Funktion_mit_Gitternetzlinien.png"
splot f(x,y)

現在は version 4.3 が開発中のようで、そこでは depth sorting + transparency がサポートされるみたいです。

これにはちょっと期待しますね。オフラインレンダリングなので画質向上はぜひ行ってほしいです(^^)


投稿者 napier : 02:12 | トラックバック


2006年04月11日

gnuplot(10)

ひさびさの gnuplot ネタです。.plt ファイルを組んで画像保存をする必要があった場合のコマンドです。これは知らないと意外と不便です(実際、今まで私は PrintScreen でキャプチャしてました)。

sin_cos_color_Comic_Snas_MS.plt

# sin(x)*cos(y) color Comic Sans MS

set xrange [-3:3]; set yrange [-3:3]; set zrange [-2:2]
set xlabel "x"; set ylabel "y"; set zlabel "z"
set isosample 20, 20
set pm3d
splot sin(x)*cos(y)
set terminal png font "Comic Sans MS" 10 size 640,480
set output "sin_cos_Comic_Sans_MS.png"
set title "sin(x)*cos(y) Comic Sans MS"
replot
set output

sin_cos_color_large.plt

# sin(x)*cos(y) color large

set xrange [-3:3]; set yrange [-3:3]; set zrange [-2:2]
set xlabel "x"; set ylabel "y"; set zlabel "z"
set isosample 20, 20
set pm3d
splot sin(x)*cos(y)
set terminal png large size 640,480
set output "sin_cos_large.png"
set title "sin(x)*cos(y) large"
replot
set output

sin_cos_color_Times_New_Roman.plt

# sin(x)*cos(y) color Times New Roman

set xrange [-3:3]; set yrange [-3:3]; set zrange [-2:2]
set xlabel "x"; set ylabel "y"; set zlabel "z"
set isosample 20, 20
set pm3d
splot sin(x)*cos(y)
set terminal png font "Times New Roman" 10 size 640,480
set output "sin_cos_Times_New_Roman.png"
set title "sin(x)*cos(y) Times New Roman"
replot
set output

sin_cos_color_Verdana.plt

# sin(x)*cos(y) color Verdana

set xrange [-3:3]; set yrange [-3:3]; set zrange [-2:2]
set xlabel "x"; set ylabel "y"; set zlabel "z"
set isosample 20, 20
set pm3d
splot sin(x)*cos(y)
set terminal png font "Verdana" 10 size 640,480
set output "sin_cos_Verdana.png"
set title "sin(x)*cos(y) Verdana"
replot
set output

4 種類をサンプルとして作ってみました。これらはフォントの指定のみが異なっています。が、あまり TrueType フォントはきれいじゃないですね。オリジナルのフォントとしては tiny (5x8 ピクセル), small (6x12 ピクセル), medium, (7x13 Bold), large (8x16), giant (9x15 ピクセル) が存在しますのでそれから選択する方がよさそうです。詳しくは gnuplot> help set term でヘルプを参照してください。このヘルプは本当によく出来ていると思います。

また、これで作られる png 画像のサイズは 640x480 ですが、それは size 640,480 という指定で行われています。このサイズ指定の方法もなかなか探すことが出来ませんでした。ヘルプを確認してからは「Windows 環境での gnuplot に関しては web resource よりもヘルプだ」と思い直しています。

使いこなす gnuplot という書籍ももっているのですがやはり unix 環境に関する記述が多く、特に画像保存の方法に関しては苦労しました。PS や eps など TeX 環境で使うわけでもなく web で使う方が多いからです。


投稿者 napier : 22:23 | トラックバック


2005年06月07日

gnuplot(9)

円と直角双曲線です。

circle.plt

# circle.plt

set parametric
set multiplot
set key on
set grid
set xtics 1; set ytics 1
set xrange [-1.5:5]; set yrange [-1.5:3]
set xlabel "x"; set ylabel "y"; set zlabel "z"
r = sqrt(2)
plot [pi/4:pi/2] r*cos(t),r*sin(t) lt 1
plot [1:5] t,1/t lt 1
plot [0:pi/4] r*cos(t),r*sin(t) lt 2
plot [0:1] t,1/t lt 2
plot [pi/2:2*pi] r*cos(t),r*sin(t) lt 3

ここでは multiplot を使用しています。これは複数の図を重ねて表示するためのモードですが、式なども文字が重なって表示されてしまう問題があります。これを表示させなくするためには set key off コマンドを使います。

circle2.plt

# circle2.plt

set parametric
set multiplot
set key off
set grid
set xtics 1; set ytics 1
set xrange [-1.5:5]; set yrange [-1.5:3]
set xlabel "x"; set ylabel "y"; set zlabel "z"
r = sqrt(2)
plot [pi/4:pi/2] r*cos(t),r*sin(t) lt 1
plot [1:5] t,1/t lt 1
plot [0:pi/4] r*cos(t),r*sin(t) lt 2
plot [0:1] t,1/t lt 2
plot [pi/2:2*pi] r*cos(t),r*sin(t) lt 3

またここでは媒介変数モードとして set parametric を指定しています。二次元グラフを作成する媒介変数モードでは t が割り当てられます。さらに変数として r を使っています。変数を使うためには単に 変数 = 値 で OK です。

図としては何でもない円と直角双曲線ですが、それぞれ t の値で色を変えています。この色分けをしたかったために set multiplot のモードにしています。


投稿者 napier : 00:01 | トラックバック


2005年06月03日

gnuplot(8)

syoyoさんとこに触発された、HDR と LDR の比較表示です。gnuplot を使おうと思った理由の1つです。オリジナル画像ファイルはこちらです。

grace_probe_hdr_ldr.plt

# grace_probe_hdr_ldr.plt

set xrange [0:2]; set yrange [0:1]; set zrange [0:20]
set xlabel "x"; set ylabel "y"; set zlabel "z"
set parametric
set pm3d
set palette defined (0 "#649de9", 1 "#ffffff", 30 "#7ddb3d" )
splot "grace_probe_hdr_ldr.dat" with pm3d

データファイルが大きすぎる&まだ HDR イメージのロード処理が適当すぎる&トーンマップせず jpg ファイルを LDR 画像として使っている、等ありデータファイルのリンクはありません(gnuplotの覚書が目的ですし)。

LDR は [0.0,1.0] の範囲であり、HDR とはレンジが違いすぎるのでカラーの変化を極端にしてあります。ここでの新しいオプションは defined(,,,) です。LDRレンジで一度 white にしています。rgbformulae でなんとかしようと思ったんですが難しいですね。小さい値における高周波関数がないのでうまくいきませんでした。sqrt(sqrt(x))や|sin(720x)|でなんとかできるかなと思ったんですが、直値指定のほうがいいですね。

このグラフでは set parametric は必要ないですね。いろいろ実験中だったんでそのまま残してしまってました(2005.06.06)。


投稿者 napier : 00:01 | トラックバック


2005年06月02日

gnuplot(7)

pm3d で指定するカラーのパターンは変更することができます。ここでは rgbformulae について示してみます。設定できる項目を gnuplot で調べるには以下のコマンドを入力します。

gnuplot> show palette rgbformulae

* there are 37 available rgb color mapping formulae:
 0: 0               1: 0.5             2: 1
 3: x               4: x^2             5: x^3
 6: x^4             7: sqrt(x)         8: sqrt(sqrt(x))
 9: sin(90x)       10: cos(90x)       11: |x-0.5|
12: (2x-1)^2       13: sin(180x)      14: |cos(180x)|
15: sin(360x)      16: cos(360x)      17: |sin(360x)|
18: |cos(360x)|    19: |sin(720x)|    20: |cos(720x)|
21: 3x             22: 3x-1           23: 3x-2
24: |3x-1|         25: |3x-2|         26: (3x-1)/2
27: (3x-2)/2       28: |(3x-1)/2|     29: |(3x-2)/2|
30: x/0.32-0.78125 31: 2*x-0.84       32: 4x;1;-2x+1.84;x/0.08-11.5
33: |2*x - 0.5|    34: 2*x            35: 2*x - 0.5
36: 2*x - 1                                           
* negative numbers mean inverted=negative colour component
* thus the ranges in `set pm3d rgbformulae' are -36..36    

カラーパターンの変更は set palette rgbformulae <r>,<g>,<b> で指定でき、rgb それぞれ 0~36 -36~36 まで指定可能です。この値はデフォルト値では 7,5,15 となっています。(追記)rgb の設定範囲が間違っていたのを修正しました。

仮にヘルプで示されている虹のパターンを示すと以下の様になります。

sin_cos_pm3d.plt

# sin_cos_pm3d

set xrange [-3:3]; set yrange [-3:3]; set zrange [-2:2]
set xlabel "x"; set ylabel "y"; set zlabel "z"
set isosample 40, 40
set pm3d
set palette rgbformulae 33,13,10
splot sin(x)*cos(y) with pm3d


投稿者 napier : 01:01 | トラックバック


2005年06月01日

gnuplot(6)

3次元グラフのカラー表示・等高線表示について。

sin_cos_color.plt

# sin(x)*cos(y) color

set xrange [-3:3]; set yrange [-3:3]; set zrange [-2:2]
set xlabel "x"; set ylabel "y"; set zlabel "z"
set isosample 20, 20
set pm3d
splot sin(x)*cos(y)

sin_cos_color_at_b.plt

# sin(x)*cos(y) color at b

set xrange [-3:3]; set yrange [-3:3]; set zrange [-2:2]
set xlabel "x"; set ylabel "y"; set zlabel "z"
set isosample 20, 20
set pm3d at b
splot sin(x)*cos(y)

sin_cos_color_at_t.plt

# sin(x)*cos(y) color at t

set xrange [-3:3]; set yrange [-3:3]; set zrange [-2:2]
set xlabel "x"; set ylabel "y"; set zlabel "z"
set isosample 20, 20
set pm3d at t
splot sin(x)*cos(y)

3パターンを示してみました。at b や at t オプションを使うことで等高線を上下面に分離可能です。普通に使う分には at b オプションの方が見やすいですね。

またここで isosample も設定していますが、これはメッシュのサンプル数を指定します。この値はデフォルトでは 10, 10 に設定されています。デフォルト設定の表示と比べてみて下さい。


投稿者 napier : 00:30 | トラックバック


Next Page, All Pages