アプリ版:「スタンプのみでお礼する」機能のリリースについて

RubyでTkライブラリを使用してGUIを作ろうと考えています。
作りたいGUIの内容ですが
・serialPortからのデータをグラフ化したい
  例)aruduinoのなどからUART通信でデータを受け取りそのデータをグラフ化したい
・心電図みたいに動的なグラフにしたい
・一つのデータではなく複数のデータを表示したい(線の色を変えるなどして)
・エクセルなどにその結果を保存し、あとで閲覧したい

以上のようなことをしたいと思っています。
RubyもGUIも初心者なのでわからないことだらけで困っております。
できればグラフを動的に表示できる所だけでも教えていただけると助かります。

開発環境
エディタ Vim
Ruby -ver 2.0.0p451
gemRuby導入済み
ライブラリ 
graph
gnuplot
rails
serialport
msgpack
などを導入しています。

A 回答 (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
    • good
    • 0

いろいろ方法がありますが、


gnuplotにRubyからパイプラインでデータを渡す方法を以前書きましたのでリンクしておきます。
http://oshiete.goo.ne.jp/qa/8182938.html
No.1に書いている方法です。

データを順次追加していくのでしたら、縦軸と横軸の範囲を事前に設定してプロットすると見栄えがよくなると思います。
いずれにしてもパラパラ漫画のような感じになります。
replotを使うと動きがスムーズになるようにも思います。

他にはRを使う方法もあります。
rubyにはrsrubyライブラリ(他にもあったような)があります。かなり複雑なグラフがきれいに書けます。

gnuplotにしてもRにしても、それぞれのソフトで使える命令をテキストデータとしてRから送るのが基本ですので、まずそのソフトでグラフ作成の方法を習得してください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/05/28 00:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!