ruby-numo / numo-gnuplot

Gnuplot wrapper for Ruby/Numo
BSD 3-Clause "New" or "Revised" License
51 stars 8 forks source link

時系列のグラフが書きたい #13

Closed kojix2 closed 7 years ago

kojix2 commented 7 years ago

いつもnumo-gnuplotで大変お世話になっております。日本語で失礼します。 numo-gnuplotで時系列の折れ線グラフを書きたいのですがうまく描けません。

require 'numo/gnuplot'

x = ['2017-01-01', '2017-01-02']
y = [1, 2]

Numo.gnuplot do
  set xdata: 'time'
  set timefmt: '%Y-%m-%d'
  plot x, y, u: [1, 2], w: :lines
end

# line 3: warning: Skipping data file with no valid points
# 
# gnuplot> plot '-' u 1:2 w lines
#                                ^
#          line 3: x range is invalid

Gemファイルの_plot_splotメソッド

# gnuplot.rb 90行〜96行
def _plot_splot(cmd,contents)
    r = contents.shift.map{|x| "#{x} "}.join
    c = contents.map{|x| x.cmd_str}.join(", ")
    d = contents.map{|x| x.data_str}.join
    p d
    run "#{cmd} #{r}#{c}", d
    nil
end

のなかで p d すると

   # "\"2017-01-01\" 1\n\"2017-01-02\" 2\ne"

となり、e回避の?ダブルクオテーションが邪魔をしているように思われます。 うまく回避する方法はありませんか?

Ubuntu 4.4.0 ruby 2.4.1 gnuplot 5.0.6

masa16 commented 7 years ago

上のスクリプトが動作するように修正しました。 https://github.com/ruby-numo/gnuplot/commit/f79b2e6c3f9ed27fd5676460c3e147d0dfafa638

kojix2 commented 7 years ago

ありがとうございました。動作するのを確認しました m( )m