Ruby gem の gnuplot で線の色を指定したい / 軸範囲を指定したい

出来ないことだってある.


RubyGemsにはたくさんの拡張ライブラリがあり,その中の1つにgnuplotをrubyから扱えるようにしたRuby Gnuplotがあります.


この記事の目標.

  • データの線の色を指定したい
  • 軸範囲を指定したい

この2つがわかりにくかったので,記事のネタにします.



データの線の色を変える

http://www.rubydoc.info/gems/gnuplot/2.6.2/Gnuplot/DataSetに『Dataset::linecolor』というのがある,というのは分かるのですが,何を指定するの.

gnuplotで線の色を変えるによると,gnuplotでは,rgb と書いた後に"red"とか"#FF0000"を書けば良いらしい.

なので,rubygemの方でも,

ds.linecolor = 'rgb "blue"'
と書けば良い.ダブルクオート入れるのがちょっと分かりにくい.


軸範囲を指定したい

ドキュメントによれば,軸範囲を指定するというメソッドは入っていない.代わりに,Plot::setメソッドを使う.

plot.set 'xrange','[-150:150]'
とすれば,x軸の範囲を-150から150に固定することが出来る.コロンで指定するのがRubyっぽくない.


サンプル

上の2つ適応したグシャァ・・・なサンプルを置いておきます.


require "gnuplot"
 
Gnuplot.open {|gnuplot|
    Gnuplot::Plot.new(gnuplot){|plot|
        plot.output 'out2.png'
        plot.terminal 'png'
        
        plot.title  'test'
        plot.set 'xrange','[-150:150]'
        plot.set 'yrange','[-150:150]'

        points = []
        lines = []
        -100.step(100,20){|y|
            lines << []
            -100.step(100,20){|x|
                lines[-1] << points.size
                points << [x,y]
            }
        }

        s = lines.size
        s.times{|o|
            lines << []
            s.times{|h|
                lines[-1] << h*s+o
            }
        }

        points.map!{|point|
            point.map{|e| e+rand(-3..3)}
        }
        
        
        lines.each{|ll|

            xx = ll.map{|i|points[i][0]}
            yy = ll.map{|i|points[i][1]}

            plot.data << Gnuplot::DataSet.new([xx, yy]){|ds|
                ds.with = "lines"
                ds.linecolor = 'rgb "blue"'
                ds.notitle
            }
        }
        
    }
}
スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

tag : Ruby

コメントの投稿

非公開コメント

プロフィール

舞葉(ぶよう)

Author:舞葉(ぶよう)
github.io
はてなブログ(競プロ)

古い記事のソースコードは色分けしていないので、高機能テキストエディタに貼り付けたほうが見やすいかも。

検索フォーム
このブログについて
自分がつまづいた話題、なんとなく書きたいと思ったこと、ググったけど殆ど資料なかったぞオイ な話等をアップする予定。通りすがりでも、参考になっていただければと。プログラムの例外入力、メモリリークは責任負いません。投稿された記事は修正・削除する場合があります。
カテゴリ
タグ

HSP3アルゴリズムとデータ構造c++RubyJavaUnity画像解析C機械学習C#LinuxcodeIQKinectMinecraftTonyuSystemraspberrypiPythonHTML5音声制御Simulinkruby俺ルール通信制御Javascriptシミュレーション

counter-shinobi
固定記事
最新記事
最新コメント
月別アーカイブ
ブロとも申請フォーム

この人とブロともになる

アクセスランキング
[ジャンルランキング]
コンピュータ
1467位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
265位
アクセスランキングを見る>>