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

[dennou-ruby:003593] Re: GGraphで時間軸を下向きにしたい。



中野です。
自己レスです。

とりあえず、時間軸で時間(hour)を解像しない場合だけですが
対応してみました。
おおかたの人はこれでもの足りますかね。

あまり美しくない気もするのですが
以下にgphys-1.2.2に対するパッチを付けておきます。

これで
GGraph.set_fig("window"=>[nil, nil,30, 0])
とかやるとy軸(時間軸)がひっくり返ります。

よろしくお願いいたします。

--- ggraph.rb.org	2012-04-20 12:55:51.890580151 +0900
+++ ggraph.rb	2012-10-19 15:41:06.871080236 +0900
@@ -1561,12 +1561,16 @@
         t0 = window[2]
         t1 = window[3]
       end
-      time = UNumeric.new(t0,sunits)
+      if t0 < t1 then
+        time = UNumeric.new(t0,sunits)
+      else
+        time = UNumeric.new(t1,sunits)
+      end
       tstr = time.to_datetime(0.1,calendar)
       jd0 = tstr.strftime('%Y%m%d').to_i
       tlen = tun.convert( t1-t0, dayun )
       if !axtype
-        if tlen < 5
+        if tlen.abs < 5
           axtype = 'h'
         else
           axtype = 'ymd'
@@ -1574,7 +1578,11 @@
       end

       if xax
-        DCL.grswnd(0.0, tlen, window[2], window[3] )
+        if tlen > 0 then
+          DCL.grswnd(0.0, tlen, window[2], window[3] )
+        else
+          DCL.grswnd(-tlen, 0.0, window[2], window[3] )
+        end
         DCL.grstrf
         if axtype == 'h'
           opts = {'cside'=>side}
@@ -1582,12 +1590,16 @@
           opts['dtick2'] = labelint if labelint
           DCLExt.datetime_ax(tstr, tstr+tlen, opts )
         else
-          DCL.ucxacl(side,jd0,tlen)
+          DCL.ucxacl(side,jd0,tlen.abs)
         end
         DCL.grswnd(*window)
         DCL.grstrf
       else
-        DCL.grswnd(window[0], window[1], 0.0, tlen)
+        if tlen > 0 then
+          DCL.grswnd(window[0], window[1], 0.0, tlen)
+          else
+          DCL.grswnd(window[0], window[1], -tlen, 0.0)
+        end
         DCL.grstrf
         if axtype == 'h'
           opts = {'yax'=>true, 'cside'=>side}
@@ -1595,7 +1607,7 @@
           opts['dtick2'] = labelint if labelint
           DCLExt.datetime_ax(tstr, tstr+tlen, opts )
         else
-          DCL.ucyacl(side,jd0,tlen)
+          DCL.ucyacl(side,jd0,tlen.abs)
         end
         DCL.grswnd(*window)
         DCL.grstrf



2012/10/19 Masuo Nakano <masuo@xxxxxxxxxxxxxx>:
> 電脳rubyのみなさま
> 中野です。
>
> GGraphで
> 時間軸が下向きのホフメラ図をかきたいのですが、
> どうしたらよいのでしょうか?
>
> GGraph.set_fig
> の
> "window"設定でuymin > uymaxとなるように設定すると、一瞬それらしい図は出るのですが
> 軸をかくところでこけるらしく、
> /home/masuo/cc-env/lib/ruby/site_ruby/1.9.1/numru/dcl.rb:2427:in
> `uyplbl': [UYPLBL] NUMBER OF POINTS IS INVALID. (RuntimeError)
>         from /home/masuo/cc-env/lib/ruby/site_ruby/1.9.1/numru/dcl.rb:2427:in `uyplbl'
>         from /home/masuo/cc-env/lib/ruby/site_ruby/1.9.1/numru/dclext_datetime_ax.rb:148:in
> `datetime_ax'
>         from /home/masuo/cc-env/lib/ruby/site_ruby/1.9.1/numru/ggraph.rb:1596:in
> `__calendar_ax'
>         from /home/masuo/cc-env/lib/ruby/site_ruby/1.9.1/numru/ggraph.rb:1678:in
> `block in axes'
>         from /home/masuo/cc-env/lib/ruby/site_ruby/1.9.1/numru/ggraph.rb:1676:in `each'
>         from /home/masuo/cc-env/lib/ruby/site_ruby/1.9.1/numru/ggraph.rb:1676:in `axes'
>         from /home/masuo/cc-env/lib/ruby/site_ruby/1.9.1/numru/ggraph.rb:2465:in
> `axes_or_map_and_ttl'
>         from /home/masuo/cc-env/lib/ruby/site_ruby/1.9.1/numru/ggraph.rb:2682:in `tone'
>         from draw_olr_xt.rb:17:in `<main>'
> といわれました。
>
> "yreverse"=>"positive:down"
> は効きませんでした。
>
> よろしくお願いいたします。
>
>
> --
> Masuo NAKANO, PhD
> Global Cloud-Resolving Modeling Research Team,
> RIGC, JAMSTEC
> 3173-25 Showa-machi, Kanazawa-ku
> Yokohama-city, 236-0001, JAPAN
> TEL: +81-45-778-5616



-- 
Masuo NAKANO, PhD
Global Cloud-Resolving Modeling Research Team,
RIGC, JAMSTEC
3173-25 Showa-machi, Kanazawa-ku
Yokohama-city, 236-0001, JAPAN
TEL: +81-45-778-5616