gnuplotter 0.0.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e22bb3e189d98c8194963a813459064cf12451e3
4
- data.tar.gz: 8b6c8b99f7bac294dacefc91a79f71a44bea52b1
3
+ metadata.gz: ee985cfe2433db143aeb9be53f61fb781dcde027
4
+ data.tar.gz: 0fab1e8d3ef299dfd4b81f5421d45955ef6a1bae
5
5
  SHA512:
6
- metadata.gz: d7cb5e47786b5b0a125ddd543490d232842bb41f1c34048d307b5c4f338b0f979166e60e058890135ad3d15efeefb68f3c71482e254847b00174ebbcd291351d
7
- data.tar.gz: c46b8ec52c2e6df8d973e860710d5f065646444b8b578591e2b5bafe4a6516840018675b6f60ce51fdf8afe4a693208f1c8688c13b49f6f3df65ab79630cc56f
6
+ metadata.gz: 29b60ec46a3ce0ec355457737fe8d9ccbe52344e1ac95e97bdbeafda492103a722b5a029c267cc11074d81490f51ab0e490caebedb8d8822e61f9f232802bbef
7
+ data.tar.gz: 25b22ca33e40b96d03316e06fe971ae7e112cc8be235ff59934b258516896bc7f73d77c59f6efb5cd7d48e9f055357d96813f12b4466482430113e00ed754daa
data/README.md CHANGED
@@ -1,2 +1,84 @@
1
1
  # gnuplotter
2
- Ruby wrapper for gnuplot
2
+
3
+ Gnuplot is a very powerful tool to plot scientific data. This is a Ruby wrapper
4
+ around Gnuplot with a syntax closely following Gnuplot's.
5
+
6
+ Installation
7
+ ------------
8
+ First you must install Gnuplot. Follow the instruction at the Gnuplot website:
9
+
10
+ http://www.gnuplot.info/
11
+
12
+ Then install the Ruby gem run:
13
+
14
+ `gem install gnuplotter`
15
+
16
+ All done!
17
+
18
+ Example
19
+ -------
20
+
21
+ ```
22
+ #!/usr/bin/env ruby
23
+
24
+ require 'gnuplotter'
25
+
26
+ data1 = [
27
+ [0, 0, 0.5, 0.5],
28
+ [0, 1, -0.5, 0.5],
29
+ [1, 1, 1, 0]
30
+ ]
31
+
32
+ data2 = [
33
+ [10, 10, 1.5, 1.5],
34
+ [10, 11, -1.5, 1.5],
35
+ [11, 11, 11, 10]
36
+ ]
37
+
38
+ gp = GnuPlotter.new
39
+
40
+ gp.set title: "Foobar"
41
+ gp.set terminal: "dumb"
42
+
43
+ gp.add_dataset(using: "1:2:3:4", with: "vectors nohead", title: "'foo'") do |plotter|
44
+ data1.map { |d| plotter << d }
45
+ end
46
+
47
+ gp.add_dataset(using: "1:2:3:4", with: "vectors nohead", title: "'bar'") do |plotter|
48
+ data2.map { |d| plotter << d }
49
+ end
50
+
51
+ puts gp.plot
52
+ ```
53
+
54
+ See more examples in the `examples/` directory.
55
+
56
+ Testing
57
+ -------
58
+ gnuplotter have a `to_gp` method that dumps a standaline Gnuplot script with
59
+ data, which is very useful for debugging and testing. For the above example
60
+ the output is:
61
+
62
+ ```
63
+ set title "Foobar"
64
+ set terminal dumb
65
+ plot "-" using 1:2:3:4 with vectors nohead title 'foo', "-" using 1:2:3:4 with vectors nohead title 'bar'
66
+ 0 0 0.5 0.5
67
+ 0 1 -0.5 0.5
68
+ 1 1 1 0
69
+ e
70
+ 10 10 1.5 1.5
71
+ 10 11 -1.5 1.5
72
+ 11 11 11 10
73
+ e
74
+ ```
75
+
76
+
77
+ Author
78
+ ------
79
+ Copyright 2015 Martin Asser Hansen mail@maasha.dk
80
+
81
+ License
82
+ -------
83
+ GPL/v2
84
+
@@ -0,0 +1,17 @@
1
+ require 'pp'
2
+ require 'bundler'
3
+ require 'rake/testtask'
4
+
5
+ Bundler::GemHelper.install_tasks
6
+
7
+ task :default => "test"
8
+
9
+ Rake::TestTask.new do |t|
10
+ t.test_files = Dir['test/*'].select { |f| File.basename(f).match(/^test_.+\.rb$/) }
11
+ t.warning = true
12
+ end
13
+
14
+ desc "Add or update rdoc"
15
+ task :doc do
16
+ `rdoc lib/`
17
+ end
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'gnuplotter'
4
+
5
+ gp = GnuPlotter.new
6
+ gp.set title: "Heatmap"
7
+ gp.set view: "map"
8
+ gp.set autoscale: "xfix"
9
+ gp.set autoscale: "yfix"
10
+ gp.set nokey: true
11
+ gp.set tic: "scale 0"
12
+ gp.set palette: "rgbformulae 22,13,10"
13
+ gp.unset xtics: true
14
+ gp.unset ytics: true
15
+
16
+ gp.add_dataset(matrix: :true, with: "image") do |plotter|
17
+ row = []
18
+
19
+ 0.upto(400) do |i|
20
+ 0.upto(600) do |j|
21
+ row[j] = i + j
22
+ end
23
+
24
+ plotter << row
25
+ end
26
+ end
27
+
28
+ gp.splot
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'gnuplotter'
4
+
5
+ data = [
6
+ ["Dogs", 343],
7
+ ["Fishes", 143],
8
+ ["Cats", 123],
9
+ ["Birds", 321],
10
+ ["Bugs", 80],
11
+ ["Cows", 200],
12
+ ["Snakes", 140]
13
+ ]
14
+
15
+ gp = GnuPlotter.new
16
+ gp.set terminal: "dumb"
17
+ gp.set title: "Animals"
18
+ gp.set xlabel: "Type"
19
+ gp.set ylabel: "Count"
20
+ gp.set yrange: "[0:*]"
21
+ gp.set autoscale: "xfix"
22
+ gp.set style: "fill solid 0.5 border"
23
+ gp.set xtics: "out"
24
+ gp.set ytics: "out"
25
+ gp.set xtics: "rotate" # Don't work with dumb terminal, try "png"
26
+
27
+ gp.add_dataset(using: "2:xticlabels(1)", with: "boxes notitle") do |plotter|
28
+ data.each { |d| plotter << d }
29
+ end
30
+
31
+ puts gp.plot
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'gnuplotter'
4
+
5
+ data1 = [
6
+ [0, 0, 0.5, 0.5],
7
+ [0, 1, -0.5, 0.5],
8
+ [1, 1, 1, 0]
9
+ ]
10
+
11
+ data2 = [
12
+ [10, 10, 1.5, 1.5],
13
+ [10, 11, -1.5, 1.5],
14
+ [11, 11, 11, 10]
15
+ ]
16
+
17
+ gp = GnuPlotter.new
18
+
19
+ gp.set title: "Foobar"
20
+ gp.set terminal: "dumb"
21
+
22
+ gp.add_dataset(using: "1:2:3:4", with: "vectors nohead", title: "'foo'") do |plotter|
23
+ data1.map { |d| plotter << d }
24
+ end
25
+
26
+ gp.add_dataset(using: "1:2:3:4", with: "vectors nohead", title: "'bar'") do |plotter|
27
+ data2.map { |d| plotter << d }
28
+ end
29
+
30
+ puts gp.plot
@@ -17,7 +17,5 @@ Gem::Specification.new do |s|
17
17
  s.rubygems_version = "2.0.0"
18
18
  s.files = `git ls-files`.split("\n")
19
19
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
21
- s.extra_rdoc_files = Dir["wiki/*.rdoc"]
22
20
  s.require_paths = ["lib"]
23
21
  end
@@ -0,0 +1,259 @@
1
+ # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< #
2
+ # #
3
+ # Copyright (C) 2015 Martin Asser Hansen (mail@maasha.dk). #
4
+ # #
5
+ # This program is free software; you can redistribute it and/or #
6
+ # modify it under the terms of the GNU General Public License #
7
+ # as published by the Free Software Foundation; either version 2 #
8
+ # of the License, or (at your option) any later version. #
9
+ # #
10
+ # This program is distributed in the hope that it will be useful, #
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of #
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
13
+ # GNU General Public License for more details. #
14
+ # #
15
+ # You should have received a copy of the GNU General Public License #
16
+ # along with this program; if not, write to the Free Software #
17
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #
18
+ # #
19
+ # http://www.gnu.org/copyleft/gpl.html #
20
+ # #
21
+ # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< #
22
+
23
+ require 'gnuplotter/version'
24
+ require 'tempfile'
25
+ require 'open3'
26
+
27
+ # Error class for all things Gnuplotter.
28
+ class GnuPlotterError < StandardError; end
29
+
30
+ class GnuPlotter
31
+
32
+ # Quotes around the values of the below keys are stripped.
33
+ NOQUOTE = [
34
+ :auto,
35
+ :autoscale,
36
+ :cbrange,
37
+ :border,
38
+ :boxwidth,
39
+ :datafile,
40
+ :grid,
41
+ :key,
42
+ :logscale,
43
+ :nocbtics,
44
+ :palette,
45
+ :rtics,
46
+ :terminal,
47
+ :tic,
48
+ :style,
49
+ :view,
50
+ :yrange,
51
+ :ytics,
52
+ :xrange,
53
+ :xtics,
54
+ :ztics
55
+ ]
56
+
57
+ # Constructor method for a GnuPlot object.
58
+ def initialize
59
+ @options = Hash.new { |h1, k1| h1[k1] = Hash.new { |h2, k2| h2[k2] = [] } }
60
+ @datasets = []
61
+ end
62
+
63
+ # Method to set an option in the GnuPlot environment e.g:
64
+ # set(title: "Nobel Prize")
65
+ # set(grid: :true) # note no such thing as set(grid).
66
+ def set(options)
67
+ raise GnuPlotterError, "Non-hash options given" unless options.is_a? Hash
68
+
69
+ options.each do |key, value|
70
+ @options[:set][key.to_sym] << value
71
+ end
72
+
73
+ self
74
+ end
75
+
76
+ # Method to unset an option in the GnuPlot environment e.g:
77
+ # unset(ytics: true) # note no such thing as unset(ytics).
78
+ def unset(options)
79
+ raise GnuPlotterError, "Non-hash options given" unless options.is_a? Hash
80
+
81
+ options.each do |key, value|
82
+ @options[:unset][key.to_sym] << value || true
83
+ end
84
+
85
+ self
86
+ end
87
+
88
+ # Method that returns a GnuPlot script as a list of lines.
89
+ def to_gp(cmd = "plot")
90
+ if ! @datasets.empty?
91
+ data_lines = []
92
+
93
+ @datasets.each do |dataset|
94
+ data_lines.push(*dataset.format_data, "e")
95
+ end
96
+
97
+ plot_settings + [data_settings(cmd, true)] + data_lines
98
+ else
99
+ plot_settings
100
+ end
101
+ end
102
+
103
+ # Method to add a dataset to the current GnuPlot.
104
+ # add_dataset(using: "1:2:3:4", with: "vectors nohead", title: "'bar'") do |plotter|
105
+ # data.map { |d| plotter << d }
106
+ # end
107
+ def add_dataset(options = {})
108
+ raise GnuPlotterError, "No block given" unless block_given?
109
+
110
+ dataset = DataSet.new(options)
111
+ @datasets << dataset
112
+
113
+ yield dataset
114
+ end
115
+
116
+ # Method to execute the plotting of added datasets.
117
+ # Any plot data, i.e. dumb terminal, is returned.
118
+ def plot
119
+ gnuplot("plot")
120
+ end
121
+
122
+ # Method to execute the splotting of added datasets.
123
+ # Any plot data, i.e. dumb terminal, is returned.
124
+ def splot
125
+ gnuplot("splot")
126
+ end
127
+
128
+ private
129
+
130
+ # Method that calls gnuplot via open3 and performs the plotting.
131
+ # Any plot data, i.e. dumb terminal, is returned.
132
+ def gnuplot(method)
133
+ @datasets.each { |dataset| dataset.close }
134
+
135
+ result = nil
136
+
137
+ Open3.popen3("gnuplot -persist") do |stdin, stdout, stderr, wait_thr|
138
+ plot_settings.each { |line| stdin.puts line }
139
+
140
+ if @datasets.empty?
141
+ stdin.puts "#{method} 1/0"
142
+ else
143
+ stdin.puts data_settings(method)
144
+ end
145
+
146
+ stdin.close
147
+ result = stdout.read
148
+ stdout.close
149
+
150
+ exit_status = wait_thr.value
151
+
152
+ unless exit_status.success?
153
+ raise GnuPlotterError, stderr.read
154
+ end
155
+ end
156
+
157
+ @datasets.each { |dataset| dataset.delete }
158
+
159
+ result
160
+ end
161
+
162
+ # Returns a list of lines with the plot settings.
163
+ def plot_settings
164
+ lines = []
165
+
166
+ @options.each do |method, options|
167
+ options.each do |key, list|
168
+ list.each do |value|
169
+ if value == :true or value === true
170
+ lines << %Q{#{method} #{key}}
171
+ elsif NOQUOTE.include? key.to_sym
172
+ lines << %Q{#{method} #{key} #{value}}
173
+ else
174
+ lines << %Q{#{method} #{key} "#{value}"}
175
+ end
176
+ end
177
+ end
178
+ end
179
+
180
+ lines
181
+ end
182
+
183
+ # Returns one comma seperated line with plot settings for each dataset.
184
+ def data_settings(method, input = nil)
185
+ list = []
186
+
187
+ @datasets.each do |dataset|
188
+ list << dataset.format_options(input)
189
+ end
190
+
191
+ "#{method} " + list.join(", ")
192
+ end
193
+
194
+ # Nested class for GnuPlot datasets.
195
+ class DataSet
196
+ # Constructor for the DataSet object.
197
+ def initialize(options = {})
198
+ @options = options
199
+ @file = Tempfile.new("gp")
200
+ @io = @file.open
201
+ end
202
+
203
+ # Write method.
204
+ def <<(*obj)
205
+ @io.puts obj.join(" ")
206
+ end
207
+
208
+ alias :write :<<
209
+
210
+ # Method to close a DataSet temporary file io.
211
+ def close
212
+ @io.close unless @io.closed?
213
+ end
214
+
215
+ # Method to delete a DataSet temporary file.
216
+ def delete
217
+ @io.close unless @io.closed?
218
+ @file.unlink if File.exist? @file.path
219
+ end
220
+
221
+ # Method that builds a plot/splot command string from dataset options.
222
+ def format_options(input = nil)
223
+ options = []
224
+
225
+ if input
226
+ options << %Q{"-"}
227
+ else
228
+ options << %Q{"#{@file.path}"}
229
+ end
230
+
231
+ @options.each do |key, value|
232
+ if value == :true
233
+ options << "#{key}"
234
+ else
235
+ options << "#{key} #{value}"
236
+ end
237
+ end
238
+
239
+ options.join(" ")
240
+ end
241
+
242
+ # Method that returns data lines from file.
243
+ def format_data
244
+ lines = []
245
+
246
+ @io.close if @io.respond_to? :close
247
+
248
+ File.open(@file) do |ios|
249
+ ios.each do |line|
250
+ line.chomp!
251
+
252
+ lines << line
253
+ end
254
+ end
255
+
256
+ lines
257
+ end
258
+ end
259
+ end
@@ -1,3 +1,3 @@
1
- module GnuPlotter
2
- VERSION = "0.0.0"
1
+ class GnuPlotter
2
+ VERSION = "1.0.0"
3
3
  end
@@ -0,0 +1,54 @@
1
+ # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< #
2
+ # #
3
+ # Copyright (C) 2007-2014 Martin Asser Hansen (mail@maasha.dk). #
4
+ # #
5
+ # This program is free software; you can redistribute it and/or #
6
+ # modify it under the terms of the GNU General Public License #
7
+ # as published by the Free Software Foundation; either version 2 #
8
+ # of the License, or (at your option) any later version. #
9
+ # #
10
+ # This program is distributed in the hope that it will be useful, #
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of #
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
13
+ # GNU General Public License for more details. #
14
+ # #
15
+ # You should have received a copy of the GNU General Public License #
16
+ # along with this program; if not, write to the Free Software #
17
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #
18
+ # #
19
+ # http://www.gnu.org/copyleft/gpl.html #
20
+ # #
21
+ # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< #
22
+ # #
23
+ # This software is part of the Biopieces framework (www.biopieces.org). #
24
+ # #
25
+ # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< #
26
+
27
+ require 'gnuplotter'
28
+ require 'test/unit'
29
+
30
+ module Kernel
31
+ def capture_stdout
32
+ out = StringIO.new
33
+ $stdout = out
34
+ yield
35
+ return out.string
36
+ ensure
37
+ $stdout = STDOUT
38
+ end
39
+
40
+ def capture_stderr
41
+ out = StringIO.new
42
+ $stderr = out
43
+ yield
44
+ return out.string
45
+ ensure
46
+ $stderr = STDERR
47
+ end
48
+ end
49
+
50
+ class Test::Unit::TestCase
51
+ def self.test(desc, &impl)
52
+ define_method("test #{desc}", &impl)
53
+ end
54
+ end
@@ -0,0 +1,108 @@
1
+ #!/usr/bin/env ruby
2
+ $:.unshift File.join(File.dirname(__FILE__), '..')
3
+
4
+ require 'test/helper'
5
+
6
+ class TestGnuPlotter < Test::Unit::TestCase
7
+ def setup
8
+ @data1 = [
9
+ [0, 0, 0.5, 0.5],
10
+ [0, 1, -0.5, 0.5],
11
+ [1, 1, 1, 0]
12
+ ]
13
+
14
+ @data2 = [
15
+ [10, 10, 1.5, 1.5],
16
+ [10, 11, -1.5, 1.5],
17
+ [11, 11, 11, 10]
18
+ ]
19
+
20
+ @gp = GnuPlotter.new.set(title: "test").set(terminal: "dumb")
21
+ end
22
+
23
+ test "#to_gp with no settings returns empty array" do
24
+ assert_equal([], GnuPlotter.new.to_gp)
25
+ end
26
+
27
+ test "#set with non-hash options raises" do
28
+ assert_raise(GnuPlotterError) { GnuPlotter.new.set("title") }
29
+ end
30
+
31
+ test "#unset with non-hash options raises" do
32
+ assert_raise(GnuPlotterError) { GnuPlotter.new.set("title") }
33
+ end
34
+
35
+ test "#to_gp with set quoted and unquoted options returns correctly" do
36
+ gp = GnuPlotter.new.set(title: "test").set(terminal: "dumb")
37
+ assert_equal(['set title "test"', 'set terminal dumb'], gp.to_gp)
38
+ end
39
+
40
+ test "#to_gp with unset quoted and unquoted options returns correctly" do
41
+ gp = GnuPlotter.new.unset(title: true).unset(terminal: true)
42
+ assert_equal(['unset title', 'unset terminal'], gp.to_gp)
43
+ end
44
+
45
+ test "#add_dataset without block raises" do
46
+ assert_raise(GnuPlotterError) { @gp.add_dataset }
47
+ end
48
+
49
+ test "#to_gp with one dataset returns correctly" do
50
+ @gp.add_dataset(using: "1:2:3:4", with: "vectors nohead", title: "'foo'") do |plotter|
51
+ @data1.map { |d| plotter << d }
52
+ end
53
+
54
+ expected = [
55
+ 'set title "test"',
56
+ 'set terminal dumb',
57
+ 'plot "-" using 1:2:3:4 with vectors nohead title \'foo\'',
58
+ '0 0 0.5 0.5',
59
+ '0 1 -0.5 0.5',
60
+ '1 1 1 0',
61
+ 'e'
62
+ ]
63
+
64
+ assert_equal(expected, @gp.to_gp)
65
+ end
66
+
67
+ test "#to_gp with two datasets returns correctly" do
68
+ @gp.add_dataset(using: "1:2:3:4", with: "vectors nohead", title: "'foo'") do |plotter|
69
+ @data1.map { |d| plotter << d }
70
+ end
71
+
72
+ @gp.add_dataset(using: "1:2:3:4", with: "vectors nohead", title: "'bar'") do |plotter|
73
+ @data2.map { |d| plotter << d }
74
+ end
75
+
76
+ expected = [
77
+ 'set title "test"',
78
+ 'set terminal dumb',
79
+ 'plot "-" using 1:2:3:4 with vectors nohead title \'foo\', "-" using 1:2:3:4 with vectors nohead title \'bar\'',
80
+ '0 0 0.5 0.5',
81
+ '0 1 -0.5 0.5',
82
+ '1 1 1 0',
83
+ 'e',
84
+ '10 10 1.5 1.5',
85
+ '10 11 -1.5 1.5',
86
+ '11 11 11 10',
87
+ 'e'
88
+ ]
89
+
90
+ assert_equal(expected, @gp.to_gp)
91
+ end
92
+
93
+ test "#plot produces something" do
94
+ @gp.add_dataset(using: "1:2:3:4", with: "vectors nohead", title: "'foo'") do |plotter|
95
+ @data1.map { |d| plotter << d }
96
+ end
97
+
98
+ assert_equal(String, @gp.plot.class)
99
+ end
100
+
101
+ test "#splot produces something" do
102
+ @gp.add_dataset(matrix: "with lines notitle") do |plotter|
103
+ @data1.map { |d| plotter << d }
104
+ end
105
+
106
+ assert_equal(String, @gp.splot.class)
107
+ end
108
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gnuplotter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin A. Hansen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-21 00:00:00.000000000 Z
11
+ date: 2015-01-26 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: GnuPlotter is a wrapper around gnuplot.
14
14
  email: mail@maasha.dk
@@ -19,8 +19,15 @@ files:
19
19
  - ".gitignore"
20
20
  - LICENSE
21
21
  - README.md
22
- - gnuplotter.gemspecs
22
+ - Rakefile
23
+ - examples/heatmap.rb
24
+ - examples/histogram.rb
25
+ - examples/lines.rb
26
+ - gnuplotter.gemspec
27
+ - lib/gnuplotter.rb
23
28
  - lib/gnuplotter/version.rb
29
+ - test/helper.rb
30
+ - test/test_gnuplotter.rb
24
31
  homepage: http://github.com/maasha/gnuplotter
25
32
  licenses:
26
33
  - GPL2
@@ -45,4 +52,6 @@ rubygems_version: 2.4.5
45
52
  signing_key:
46
53
  specification_version: 4
47
54
  summary: GnuPlotter
48
- test_files: []
55
+ test_files:
56
+ - test/helper.rb
57
+ - test/test_gnuplotter.rb