ruby-plot 0.4.3 → 0.5.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.
Files changed (3) hide show
  1. data/VERSION +1 -1
  2. data/lib/plot_lines.rb +38 -55
  3. metadata +5 -5
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.3
1
+ 0.5.0
@@ -7,40 +7,18 @@
7
7
  # Usage: See below.
8
8
 
9
9
  module RubyPlot
10
-
11
- def self.plot_lines(path, title, x_lable, y_lable, names, x_values, y_values, faint=nil, labels=nil)
12
-
13
- LOGGER.debug "plot lines -- "+names.inspect
14
- LOGGER.debug "plot lines -- "+x_values.inspect
15
- LOGGER.debug "plot lines -- "+y_values.inspect
16
- LOGGER.debug "plot lines -- "+labels.inspect
17
-
18
- data = []
19
- (0..x_values.size-1).each do |i|
20
- data << y_values[i]
21
- data << x_values[i]
22
- end
23
-
24
- #Main
25
- STDOUT.sync = true
26
- # -----------------------------------------------------
27
- # checking input
28
- # -----------------------------------------------------
29
- # check parameters
30
- status=false
31
- LOGGER.debug "#{names.length} algs entered"
32
-
33
- #LOGGER.debug names.inspect
34
- #LOGGER.debug data.inspect
35
-
36
- if names.length != data.length/2
37
- status=true
10
+
11
+ class LinePlotData
12
+ attr_accessor :name, :x_values, :y_values, :faint, :labels
13
+ def initialize(params)
14
+ params.each{|k,v| send((k.to_s+"=").to_sym,v)}
38
15
  end
16
+ end
17
+
18
+ def self.plot_lines(path, title, x_lable, y_lable, plot_data )
39
19
 
40
- if status
41
- raise "Usage: svg_roc_plot (path(?), title(string), x-lable(string), y-lable(sting), algorithms(array), true_pos_data1(array), false_pos_data1(array), ..., true_pos_data_n(array), false_pos_data_n(array))\n"+
42
- " Only pairs of data are allowed but at least one.\n"+
43
- " Each data array has to provide one float/int number from 0 to 100 per entry."
20
+ plot_data.each do |d|
21
+ LOGGER.debug "plot lines -- "+d.name+" - "+d.x_values.inspect+" - "+d.y_values.inspect+" - "+d.labels.inspect
44
22
  end
45
23
 
46
24
  # gnuplot check
@@ -52,18 +30,18 @@ module RubyPlot
52
30
  "sudo apt-get install gnuplot"
53
31
  end
54
32
 
55
- dat_number=0
56
-
57
33
  output_dat_arr = Array.new
58
34
 
59
-
60
35
  # -----------------------------------------------------
61
36
  # create *.dat files of imported data for gnuplot
62
37
  # -----------------------------------------------------
63
38
  # write true/false arrays to one array
64
- for i in 0..names.length-1#/2-1
65
- true_pos_arr = data[i*2]
66
- false_pos_arr = data[i*2+1]
39
+ #for i in 0..plot_data.length-1#/2-1
40
+ plot_data.size.times do |i|
41
+
42
+ true_pos_arr = plot_data[i].y_values
43
+ false_pos_arr = plot_data[i].x_values
44
+
67
45
  #check length of input files
68
46
  if true_pos_arr.length == false_pos_arr.length
69
47
  #LOGGER.debug "Same length!"
@@ -73,11 +51,11 @@ module RubyPlot
73
51
  if numeric?(false_pos_arr[j].to_s.tr(',', '.')) && false_pos_arr[j].to_s.tr(',', '.').to_f <= 100 && false_pos_arr[j].to_s.tr(',', '.').to_f >= 0
74
52
  output_dat_arr[j] = "#{true_pos_arr[j]} #{false_pos_arr[j]}"
75
53
  else
76
- raise "The data of #{names[i]} has not the right formatin at position #{j}\n"+
54
+ raise "The data #{plot_data[i].inspect} has not the right formatin at position #{j}\n"+
77
55
  "The right format is one float/int from 0 to 100 each line (e.g. '0'; '23,34'; '65.87' or '99')"
78
56
  end
79
57
  else
80
- raise "The data of #{names[i]} has not the right formatin at position #{j}+\n"
58
+ raise "The data #{plot_data[i].inspect} has not the right formatin at position #{j}+\n"
81
59
  "The right format is one float/int from 0 to 100 each line (e.g. '0'; '23,34'; '65.87' or '99')"
82
60
  end
83
61
  end
@@ -92,7 +70,7 @@ module RubyPlot
92
70
  output_dat_arr.clear
93
71
 
94
72
  else
95
- raise "Data pair of #{names[i]} have no the same number of elements."
73
+ raise "num x-values != y-values: "+plot_data[i].inspect
96
74
  end
97
75
  end
98
76
 
@@ -133,33 +111,33 @@ module RubyPlot
133
111
  output_plt_arr.push ""
134
112
  output_plt_arr.push "# Draws the plot and specifies its appearance ..."
135
113
 
136
- if labels!=nil
137
- type = 1
138
- labels.each do |label|
139
- if label!=nil
114
+ type = 1
115
+ plot_data.each do |p|
116
+ if p.labels
117
+ p.labels.each do |label|
140
118
  l = label[0]
141
119
  x = label[1]
142
120
  y = label[2]
143
- puts l.to_s+" "+x.to_s+" "+y.to_s
121
+ #puts l.to_s+" "+x.to_s+" "+y.to_s
144
122
  #output_plt_arr.push "set label \"("+x.to_s+","+y.to_s+") "+l.to_s+"\" at first 25, first 40"
145
123
  output_plt_arr.push "set label \""+l.to_s+"\" at first "+x.to_s+", first "+y.to_s+" front offset 1,-1 tc lt "+type.to_s
146
124
  output_plt_arr.push "set arrow from "+(x+3).to_s+","+(y-3).to_s+" to "+(x+1).to_s+","+(y-1).to_s+" lt "+type.to_s
147
125
  end
148
- type += 1
149
- end
126
+ end
127
+ type += 1
150
128
  end
151
129
 
152
130
  output_plt_arr.push "plot \\"#'random_0.dat' using 1:2 title 'random' with lines lw 1, \\"
153
131
  i = 0
154
- for i in 0..names.length-1
132
+ for i in 0..plot_data.length-1
155
133
 
156
134
  #style = grey[i] ? "lw 1.5 lt 0" : "lw 3"
157
- style = faint!=nil && faint[i] ? "lw 2" : "lw 4"
135
+ style = plot_data[i].faint ? "lw 2" : "lw 4"
158
136
 
159
- if i == names.length-1
160
- output_plt_arr.push " 'data#{i}.dat' using 2:1 title '#{names[i]}' with lines #{style}"
137
+ if i == plot_data.length-1
138
+ output_plt_arr.push " 'data#{i}.dat' using 2:1 title '#{plot_data[i].name}' with lines #{style}"
161
139
  else
162
- output_plt_arr.push " 'data#{i}.dat' using 2:1 title '#{names[i]}' with lines #{style}, \\"
140
+ output_plt_arr.push " 'data#{i}.dat' using 2:1 title '#{plot_data[i].name}' with lines #{style}, \\"
163
141
  end
164
142
  end
165
143
  output_plt_arr.push ""
@@ -191,7 +169,7 @@ module RubyPlot
191
169
  # -----------------------------------------------------
192
170
  `rm config.plt`
193
171
  LOGGER.debug "config.plt removed."
194
- for i in 0..names.length-1
172
+ for i in 0..plot_data.length-1
195
173
  `rm data#{i}.dat`
196
174
  LOGGER.debug "data#{i}.dat removed."
197
175
  end
@@ -199,8 +177,13 @@ module RubyPlot
199
177
 
200
178
  def self.test_plot_lines
201
179
  #plot_lines("/tmp/result.svg" , "name of title", "x-values", "y-values", ["name", "test", "bla"], [[20,60,80], [10,25,70,95], [12,78,99]], [[15,50,90],[20,40,50,70],[34,89,89]],[true,false,true])
180
+ #plot_lines("/tmp/result.png" , "name of title", "x-values", "y-values", ["name", "test", "bla"], [[20,60,80], [10,25,70,95], [12,78,99]], [[15,50,90],[20,40,50,70],[34,89,89]],[true,false,true],[nil,["confidence",25,40]])
202
181
 
203
- plot_lines("/tmp/result.png" , "name of title", "x-values", "y-values", ["name", "test", "bla"], [[20,60,80], [10,25,70,95], [12,78,99]], [[15,50,90],[20,40,50,70],[34,89,89]],[true,false,true],[nil,["confidence",25,40]])
182
+ plot_data = []
183
+ plot_data << LinePlotData.new({ :name => "name", :x_values => [20,60,80], :y_values => [15,50,90] })
184
+ plot_data << LinePlotData.new({ :name => "test", :x_values => [10,25,70,95], :y_values => [20,40,50,70], :labels => [["confidence",25,40]] })
185
+ plot_data << LinePlotData.new({ :name => "bla", :x_values => [12,78,99], :y_values =>[34,89,89], :faint => true })
186
+ plot_lines("/tmp/result.png" , "name of title", "x-values", "y-values", plot_data)
204
187
  end
205
188
 
206
189
  private
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-plot
3
3
  version: !ruby/object:Gem::Version
4
- hash: 9
4
+ hash: 11
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 4
9
- - 3
10
- version: 0.4.3
8
+ - 5
9
+ - 0
10
+ version: 0.5.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - David Vorgrimmler
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-05-19 00:00:00 +02:00
19
+ date: 2011-05-24 00:00:00 +02:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency