[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dennou-ruby:002500] Re: treatment of -inf



堀之内です. 

> 説明不足でした. 座標軸を log スケールでグラフを表示するならば
> それで可能な気がします. しかし, 今やりたいことはエネルギースペクトルの
> 2 次元表示なので, log をとった変数を一度作成してから等値線を描く, 
> という手順になります. その場合, log を計算した後の変数の値として
> -inf が格納されるためにうまくいかないんだと思うんですが. 
> 
> 2 次元等値線を log スケール間隔で引く機能は DCL にはありませんよね. 

ということは、ほんとはコンターラベルが log10 の値で
0, 1, 2,  などとなるより、元の値で 0, 10, 100,.. となるのが
嬉しいんですね。私もよくやりますが、レベルを陽に生成してます。
やり方はいろいろ。

   levs = [1,2,5,10,20,50,100]   # 全部指定する場合

   na = NArray[1.0, 2.0, 5.0]    # これを桁をずらして繰り返す
   levs = na.to_a + (na*10).to_a + (na*100).to_a + [1000.0]

   na = NArray[1.0, 2.0, 5.0]    # これを桁をずらして繰り返す (2)
   levs = Array.new
   (-2..3).each{|i| levs += (na*10**i).to_a }

前から、GGraph に log スケールの自動コンターレベル決めを導入しよ
うと思ってるのですが、こんな感じで簡単に決められるので、良く使っ
てるにも関わらずまだやってません。

# 私は gtview コマンドはあまり使わず、irb で対話的にするか
   プログラム書く(irbのヒストリーを使って作ったり)ことが多い
   ので、必要に応じてその場でいろいろ対処してます。(残すのはシェ
   ルプログラムでなくrubyプログラム)