用红宝石绘制直方图百分比

时间:2014-01-10 19:28:13

标签: ruby gnuplot histogram

假设我有一个每行感知的文件,如下所示:

0.86
0.456
0.4389
0.56
0.69
0.468
0.46
0.368
0.9
...

我想使用gnuplot gem在Ruby脚本中绘制这些数据的直方图。 它可能看起来像高斯钟。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

尝试使用gnuplot gem时我有一些乐趣:)

给出像这样的文件data.txt

0.86
0.456
0.4389
0.56
0.69
0.468
0.46
0.368
0.9

这个Ruby类应该可以解决这个问题:

require 'gnuplot'

class DataPlotter
  class << self
    def plot_data(data)
      Gnuplot.open do |gp|
        Gnuplot::Plot.new(gp) do |plot|
          plot.title  "Data Plot Example"
          plot.data << Gnuplot::DataSet.new(data) do |ds|
            ds.with = "linespoints"
            ds.notitle
          end
        end
      end
    end

    def load_data_from_file(filename)
      File.open(filename).readlines.map do |line|
        line.chomp.to_f
      end
    end

    def plot_file(filename)
      plot_data(load_data_from_file(filename))
    end
  end
end

DataPlotter.plot_file('data.txt')

给出了这个结果:

enter image description here