前の画面〕 〔クリックポイント〕 〔最新の一覧〕 〔全て読んだことにする〕〔全て読んだことにして終了〕 〔終了

2184 re(2):複素数データの表示
2010/2/12(金)18:04 - 竹の - nolm01.iee.niit.ac.jp - 817 hit(s)

引用する
現在のパスワード


この松田さんの hsv を rgb に変換する関数を借りれば、CVS 版の gnuplot なら
ぎりぎり「ごまかし」ができないわけでもなさそうなんですが、点数が多いとや
はり使用できる色数の面で無理があるようです。

その「ごまかし」とは、四角 (pointtype  5) に lc rgbcolor variable で色を
つける方法です。

----- ここから -----
set term png
set out 'file.png'
unset key
set view map

# サンプルとして f(z)=z*z = (x*x-y*y) + i (2*x*y) を使用
refunc(x,y)=x*x-y*y # 関数値の実数部分
imfunc(x,y)=2.0*x*y # 関数値の虚数部分

set xrange [-1:1]
set yrange [-1:1]

remin=-1; remax=1; immin=-2; immax=2 # それぞれ関数値の最小値、最大値
nre(rev) = (rev-remin)/(remax-remin) # refunc() の関数値を [0:1] に正規化
nim(imv) = (imv-immin)/(immax-immin) # imfunc() の関数値を [0:1] に正規化

# HSV (いずれも [0:1] とする) から R,G,B (いずれも [0:1]) を計算する関数
hsv2r(h,s,v)=(k=floor(h*6), f=h*6-k, (k==0 || k==5)? v: \
    (k==2 || k==3)? v*(1.0-s): \
    (k==1)? v*(1.0-f*s): \
    v*(1.0-(1.0-f*s)))
hsv2g(h,s,v)=(k=floor(h*6), f=h*6-k, (k==1 || k==2)? v: \
    (k==4 || k==5)? v*(1.0-s): \
    (k==3)? v*(1.0-f*s): \
    v*(1.0-(1.0-f*s)))
hsv2b(h,s,v)=(k=floor(h*6), f=h*6-k, (k==3 || k==4)? v: \
    (k==0 || k==1)? v*(1.0-s): \
    (k==5)? v*(1.0-f*s): \
    v*(1.0-(1.0-f*s)))

# 実数部分 (rev)、虚数部分 (imv) H,V 値とし、それを 24bit RGB 値に変換
z2rgb(rev,imv) = 65536*int(255*hsv2r(nre(rev),1.0,nim(imv))) \
  + 256*int(255*hsv2g(nre(rev),1.0,nim(imv))) \
  + int(255*hsv2b(nre(rev),1.0,nim(imv)))

# とりあえず疑似データファイル ++ で
set pointsize 3
set samples 40
set isosamples 40
splot "++" using 1:2:0:(z2rgb(refunc($1,$2),imfunc($1,$2))) \
  w p pt 5 lc rgbcolor variable 
set out
----- ここまで -----

sample 数 20 で pointsize 6 位ならそれらしく見えるんですが、40 位にすると
うちの環境ではかなり怪しいです。

なお、上のスクリプトは CVS 版 (4.5) でないと使えないものを色々使ってます
すので、4.0, 4.2.X では動きません。


〔ツリー構成〕

【2182】 複素数データの表示 2010/2/11(木)15:58 たけもと (893)
┣【2183】 re(1):複素数データの表示 2010/2/12(金)09:57 松田七美男 (1899)
┣【2184】 re(2):複素数データの表示 2010/2/12(金)18:04 竹の (1903)
┣【2185】 re(3):複素数データの表示 2010/2/12(金)19:34 松田七美男 (116)
┣【2186】 re(3):複素数データの表示 2010/2/12(金)21:54 松田七美男 (508)
┣【2187】 re(4):複素数データの表示 2010/2/13(土)16:33 竹の (1240)
┣【2188】 re(5):複素数データの表示 2010/2/13(土)19:55 松田七美男 (89)
┣【2189】 re(5):複素数データの表示 2010/2/13(土)22:24 松田七美男 (1060)
┣【2190】 re(6):複素数データの表示 2010/2/14(日)16:15 竹の (1553)
┣【2191】 re(7):複素数データの表示 2010/2/16(火)09:58 竹の (1923)
┣【2616】 re(3):複素数データの表示 2012/11/15(木)20:23 竹の (470)

前の画面〕 〔クリックポイント〕 〔最新の一覧〕 〔全て読んだことにする〕〔全て読んだことにして終了〕 〔終了

※ 『クリックポイント』とは一覧上から読み始めた地点を指し、ツリー上の記事を巡回しても、その位置に戻ることができます.