• 締切済み

Rubyで動的なグラフのGUIを作りたいのですが

RubyでTkライブラリを使用してGUIを作ろうと考えています。 作りたいGUIの内容ですが ・serialPortからのデータをグラフ化したい   例)aruduinoのなどからUART通信でデータを受け取りそのデータをグラフ化したい ・心電図みたいに動的なグラフにしたい ・一つのデータではなく複数のデータを表示したい(線の色を変えるなどして) ・エクセルなどにその結果を保存し、あとで閲覧したい 以上のようなことをしたいと思っています。 RubyもGUIも初心者なのでわからないことだらけで困っております。 できればグラフを動的に表示できる所だけでも教えていただけると助かります。 開発環境 エディタ Vim Ruby -ver 2.0.0p451 gemRuby導入済み ライブラリ  graph gnuplot rails serialport msgpack などを導入しています。

  • Supee
  • お礼率50% (2/4)
  • Ruby
  • 回答数2
  • ありがとう数13

みんなの回答

  • ki073
  • ベストアンサー率77% (491/634)
回答No.2

NO.1の訂正です。 >gnuplotにしてもRにしても、それぞれのソフトで使える命令をテキストデータとしてRから送るのが基本ですので この部分は gnuplotにしてもRにしても、それぞれのソフトで使える命令をテキストデータとしてRubyから送るのが基本ですので です。 さて、もう少し分かりやすい例を挙げておきます。 sinとcosの2つのデータがプロットされます。 x=0.0 xa=[] # データ保存用配列 y1=[] y2=[] open("|gnuplot", "w") do|gp| while x<30.0 xa << x y1 << Math.sin(x) y2 << Math.cos(x) gp.puts "plot '-' , '-'" # データが100個を超えると最新の100個だけでプロット (xa.size>100 ? xa[-100..-1] : xa).zip(y1.size>100 ? y1[-100..-1] : y1){|a, b| gp.puts "#{a} #{b}"} gp.puts "e" (xa.size>100 ? xa[-100..-1] : xa).zip(y2.size>100 ? y2[-100..-1] : y2){|a, b| gp.puts "#{a} #{b}"} gp.puts "e" x=x+0.1 end end

  • ki073
  • ベストアンサー率77% (491/634)
回答No.1

いろいろ方法がありますが、 gnuplotにRubyからパイプラインでデータを渡す方法を以前書きましたのでリンクしておきます。 http://okwave.jp/qa/q8182938.html No.1に書いている方法です。 データを順次追加していくのでしたら、縦軸と横軸の範囲を事前に設定してプロットすると見栄えがよくなると思います。 いずれにしてもパラパラ漫画のような感じになります。 replotを使うと動きがスムーズになるようにも思います。 他にはRを使う方法もあります。 rubyにはrsrubyライブラリ(他にもあったような)があります。かなり複雑なグラフがきれいに書けます。 gnuplotにしてもRにしても、それぞれのソフトで使える命令をテキストデータとしてRから送るのが基本ですので、まずそのソフトでグラフ作成の方法を習得してください。

Supee
質問者

お礼

解答ありがとうございます! さっそくそのやり方をチャレンジしてみます。 お返事が遅くなり申し訳ありませんでした。

関連するQ&A

  • RubyとJava どちらでWEB開発をするか?

    今、会社でパッケージのWEBアプリケーションを作ろうと考えています。 仕様はだいたい決まり、ではどの言語で開発するかという段階で、Ruby on Rails か Java (JSFなど使用)いづれかを使用して開発することになりました。 Ruby on Rails だと簡単にWEBアプリを作成できるイメージがあり、Javaで作成すると多少手間はかかりますが、いろいろな機能を拡張できそう(ライブラリなどがRubyより豊富。ツールなども揃っている)、 などどちらもメリットがありそうです。速度も速い? パッケージ開発であるため、最終的には大規模のデータを取り扱える仕組みを構築しておきたいのですが、なるべくなら簡単に作成できるRubyで作りたいと思っていますが、本当にRubyで作ってもよいものでしょうか? なにとぞアドバイスお願い致します。

    • ベストアンサー
    • Java
  • 1つのグラフ内で複数の折れ線グラフを描きたい

    ネット上でダウンロードしたスクリプトに手を加えて1つのグラフ内に複数の折れ線グラフを詰め込むプログラムを作っているのですが、私は初心者なのでなかなかうまくいきません。 http://park15.wakwak.com/~akutagawa/graph/graph.htm こんな風にもう一つの折れ線グラフのデータをマーカーとラインで表示するところまではできているのですが、もう1つのデータの点と点を線で結ぶというところでつまづいています。 どうか助けていただけませんでしょうか? graph-line.jsのソースは以下の様になってます。 http://park15.wakwak.com/~akutagawa/cgi-bin/graph-line-js.cgi (一部半角の<divを全角の<divにしてます)

  • RubyとC#について

    現在、研究のためエクセルVBAで数十万~数百万個程度のデータの集計及び分析をしています。 VBAでは時間がかなりかかってしまうことと、グラフの描画能力が低いため、新たなプログラミング言語を勉強しようと考えています。 いろいろ情報を収集した結果、RubyかC#にしようかと思っております。 あまり複雑なプログラミング能力は必要ないため、比較的導入しやすそうなRubyにしようかと考えていますが、グラフの描画能力と将来性を考えればC#の方がいいのではないかと迷っております。 やりたい事は、データの集計分析とある程度の柔軟性のあるグラフの描画です。 どちらの言語が適しているのか是非ご教授ください。 よろしくお願いいたします。

  • JpGraphのグラフをうまくサイトにはめ込みたいが・・

    JpGraphを使用してデータベースから抽出したデータをサイトに 表示したいと思っています。 メインのサイトから、 名前、パスワード、期間等を入力ポストして、 次画面にてグラフ表示したいと思っています。 グラフ表示するだけなら、メインサイトで <form method="post" action="graph.php"> <input type="text" name="name"> : </form> で graph.php内でデータ抽出・グラフ出力でOKだと思うのですが、 次画面ではグラフだけでなく<html>に埋め込んだ形でいろいろと 他の情報も表示したいと思っています。 <html> <body> 検索結果・・・ <img src="graph.php"> : graph.phpには名前やパスワード等の情報も送らなければいけないので どのような方法で行なわなければいけないのか、よくわかりません。 お知恵お貸しください。

    • ベストアンサー
    • PHP
  • プログラムのGUI部分をブラウザで代用する手段

    rubyスクリプトを使用してデータ処理を行っております。 このプログラムのGUI部分をブラウザで代用することは可能でしょうか? もし可能であればどのような手段があるのかご教示いただきますと嬉しいです。 # ブラウザを使用せずに、rubyのGUIライブラリを使用する方法はここでは除外してください。 ブラウザ上で必要なパラメータを設定し、実行ボタン押下でこれをスクリプトに渡してスクリプト実行、処理結果(テキスト)をブラウザ上に表示させたいです(GUIとスクリプト間のデータの受け渡しは標準入出力利用? またはパラメータ用のデータファイル経由?) ブラウザ上で使用したいGUI部品は、ボタン、テキストエリア(入力用、表示用)、ラジオボタン、コンボボックス、(PC内の)ファイル選択ダイアログ等 実行環境 ・Windows XP以降(XPは事情によりサポートが切れても使用予定) ・ネットワークに接続せずPC単体で使用  htmlファイルをクリックしてGUIを起動するイメージ ・ブラウザはPCに標準で入っているインターネットエクスプローラ ・そのPCでhttpサーバー等は動かせません javascript等の使用で上記内容を実現可能でしょうか? よろしくお願いします。

  • .NET で C# を使い、他のソフトウェアを呼び出したい

    .NET で C# を使い、他のソフトウェアを呼び出したいのですが、どうしたら良いのでしょうか。具体的には、gnuplot を呼び出してグラフを作り、それをGUIに表示させたいのです。 アドバイスがありましたら、よろしくお願いします。

  • VB6でグラフを表示する方法

    みなさん教えてください。 今VB6で、下記のようにグラフを表示するソフトを作成しています。 (1)Text1、Text2、Text3に数値を入力する (2)(1)後「グラフ作成」ボタンを押すと、入力値がテキストファイル「data.txt」に書き出される。 (3)(2)後、赤枠エリアに例のようなグラフ(折れ線グラフ)が作成される →「PictureBox」か「Microsoft Graph 10.0 Object Library」を用いて、エクセルで表示するようなグラフを作成したい 上記(1)~(3)のような動きをするソフトを作成しているのですが、(2)の段階で苦戦しています。悩んでいます。 みなさん、よいアドバイスを頂けないでしょうか。 サンプル構文をのせて頂けたらうれしいです。 よろしくお願い致します。

  • Ruby/Tkの一部が動かない

    いつもお世話になってます。 今回GUIアプリケーションを作りたくて、ActiveTcl→http://www.activestate.com/からバージョン8.5をインストールしました。 そしてプログラムを作って実行すると、一部の簡単なものは実行できるのですが、少し複雑なプログラムになると「Ruby interpreter(CUI)1.8.6[i386-mswin32]は動作を停止しました」というダイアログが出てきてしまいます。コマンドラインのほうには、alloc: invalid block:XXXXXX: ef ef 30 (Xの部分は何かの16進数) のような文字が現れてしまいます。 原因を本で調べてみるとこれはTkのヘッダファイルとライブラリファイルの整合性が取れていないとのことでした。対策として、同じヘッダファイルとライブラリファイルが用いられているか確認し、不整合があるならext/tcltklib/extconf.rbを編集しなさいと書かれています。(うまくいかないために何度かバージョンの違うActiveTclをインストールしてしまったのでこの原因が有力だと思ってます。) このext/tcltklib/extconf.rbがどこを探しても見当たりません。これを見つけたことによって解決されるかはわかりませんが。。 どうか助けてください。お願いします。 WindowsVista Ruby-1.8

  • gnuplotで鳥瞰図グラフ

    gnuplotの使い方がよく分からないので教えて下さい。 卒論で3次元のデータをテキストファイルに書き込んでgnuplotで鳥瞰図表示のグラフを作成したいと思っていますがうまくいきません。 連続関数ではないのでうまく鳥瞰図にできるかわからないのですがうまく表示させる方法があれば教えて下さい。 splotなどの関数は使いましたが値が0である場所もあるのでなかなかきれいになりません。できれば鳥瞰図の下に等高線を表示させたいと思っています。 よろしくお願い致します。

  • 書籍「プログラミングのための線形代数」のアニメーションプログラム

    「プログラミングのために線形代数」という本を購入したのですが、この本の付録に"アニメーションプログラム"という写像によって点がどのように移動するかをアニメで表示できるものがあって、その導入方法が巻末に記されていたのですが、いまいち使い方がわかりません。 1.RubyとGnuplotが使える環境を準備する。 2.オーム車のWebサイトから mat_anim.rb をダウンロードし、カレントディレクトリに置く。 3.指示されたコマンドを入力する。 RubyとGnuplotの導入は終わり、ソースファイルのダウンロードも済んだのですが、"カレントディレクトリ"がどこなのか、コマンドをどこに入力するのかがわからなくて困っています(コマンドライン?Gnuplot?)。 どなたか、詳しい手順をご教授ください。 http://www.ohmsha.co.jp/data/link/4-274-06578-2/anime/index.html