[ 地球流体電脳倶楽部 / davis / Gfdnavi / doc / ForDeveloppers ]

Gfdnavi においてどうやって可視化機能を増やすか


  1. システムに追加する
  2. ユーザーオリジナルメソッドを登録する

システムに追加する

変更すべきファイル

yaml file

描画メソッド一つにつき、一つの yaml file を用意する。

基本的な情報の設定

以下は折れ線図のための yaml file である。

db/draw_methods/line.yml
:name: line
:description: line plot
:ndims: 1
:nvars: 1
:vizshot_method: line
:attributes: []

yaml file には Hash データが入っており、 その Hash のキーは symbol である。

描画パラメータの設定

line では描画パラメータの設定は一つも無かった。 次に、描画パラメータを設定する場合について説明する。 以下はトーン&等値線図のための yaml file である(一部省略)。

db/draw_methods/tone.yml
:name: tone
:description: tone and contour plot
:ndims: 2
:nvars: 1
:vizshot_method: tone_cont
:setting_html: |
  <div>
    <%= check_box("analysis", "tone_tone") %>
    <label for="analysis_tone">Draw tone</label>
    <br/>
    <label for="analysis_min">minimum tone level</label>
    <%= text_field("analysis", "tone_min", :size => 4, :maxlength => 12) %>
    <br/>
    <label for="analysis_levels">comma-separated tone levels:</label>
    <%= text_field("analysis", "tone_levels", :size => 30, :maxlength => 200) %>
    <br/>
    <%= check_box("analysis", "tone_color_bar") %>
    <label for="Color bar">Color bar</label>
  </div>

:attributes:
- :name: tone
  :default: true
  :type: boolean
  :parser: vizshot
- :name: min
  :type: float
  :optional: true
  :parser: ggraph
- :name: levels
  :type: array_float
  :optional: true
  :parser: ggraph
- :name: color_bar
  :default: true
  :type: boolean
  :parser: vizshot

":attributes:" は Hash を要素とする Array である。 その Hash は symbol をキーにもつ

RHTMLのなかではERBおよびRailsのヘルパーメソッドが利用できる。 改行を含む String を yaml file にかく場合は "|" から初めて、 空行で終わる。

オリジナルの描画法の設定

折れ線、コンターともにvizshotでサポートされている描画メソッドである。 では、次に独自の描画メソッドを追加する方法を見てみよう。 以下は散布図用の yaml file である。

db/draw_methods/scatter.yml
:name: scatter
:description: scatter plot
:ndims: 1
:nvars: 2
:vizshot_method: scatter
:attributes: []
:script: |
  newfrm = opt.delete(:newfrm)
  GGraph::scatter(gphys, gphys1, newfrm, opt)

:ggraph: |
  gropn_1_if_not_yet
  unless defined?(@@scater_options)
    @@scater_options = Misc::KeywordOptAutoHelp.new(
      ['title', nil, 'Title of the figure'],
      ['annotate', true, 'if false, do not put texts on the right margin even when newframe==true'],
      ['index', 1, 'mark index'],
      ['type', 2, 'mark type'],
      ['size', 0.01, 'marks size']
    )
  end
  opts = @@scater_options.interpret(options)
  gphys = gphys.first1D.copy
  gphys1 = gphys1.first1D.copy
  len = gphys.length
     .
     .
    snip

設定を反映する

yamlファイルの内容をgfdnaviで利用するためには、 データベースに登録する必要がある。 データベースに登録するためには

rake setup:draw_methods

とする。

おまけ

Analysis Model

Analysis model 内では、 描画パラメータの追加は、Analysisクラスの属性を追加することで実現されている。 クラス属性の名前は "描画メソッド名+パラメータ名" である。 例えば、toneメソッドのmaxパラメータの場合、 Analysis#tone_max となる。 描画に関するパラメータやオプションをもとに、 Analysisモデルが Vizshot を生成し、 その vizshot を通じて GGraph や DCL に渡される。

ヘルプを追加する

<URL:HowTo_help_popup.htm> を参照

ユーザーオリジナルメソッドを登録する

描画メソッド登録ページ

ユーザーオリジナルのメソッドを登録するためには、 まずユーザーログインする必要がある。

ログインした時の画面もしくは上のメニューから "User" をクリックした画面に "manage_draw_methods" リンクがある。 そこに移動すると、利用できる描画メソッドのリストおよび、 描画メソッド新規追加ページへのリンク(create_draw_method)がある。 さっそく新規追加ページに移動しよう。 ここで入力する値は、上の yaml ファイルに記述した内容とほとんど同じである。


davis Group / GFD Dennou Staff dcstaff@gfd-dennou.org
Last Updated: 2008/03/08 (西澤), Since: 2006/11/07 (堀之内)