gnutemplate 0.1.8.3 → 0.1.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/gnutemplate/version.rb +1 -1
- data/lib/gnutemplate.rb +112 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7fef32d38de9aac460a3999b100fedb69ffa1a95a72589fc196b4dc34385e1bf
|
4
|
+
data.tar.gz: 3ff03c9032f496344d52b28f99e25e6f7440e31b8a617e292871123d0fced7c4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c6af589bee0cd490502d19f180a5929af1633bd6aae0441856fb8ad7cf3e5de945ecaac27171f31c6e29ba18a668f5784b0036a091a45e6826ca6d2da828fc34
|
7
|
+
data.tar.gz: 466d9643c0fdb0e0697a4afc445da81c1d450dbde07550a62d19ce22e0ac398ac4a3c725454a4a7bd09502f01f980bc963fdcae59c8d404be34d49e055c26a46
|
data/lib/gnutemplate/version.rb
CHANGED
data/lib/gnutemplate.rb
CHANGED
@@ -4,9 +4,32 @@ require_relative "gnutemplate/version"
|
|
4
4
|
require "numo/gnuplot"
|
5
5
|
require "histogram/array"
|
6
6
|
|
7
|
+
module ExtendNP
|
8
|
+
def new_to_iruby
|
9
|
+
require 'tempfile'
|
10
|
+
tempfile_svg = Tempfile.open(['plot','.svg'])
|
11
|
+
# output SVG to tmpfile
|
12
|
+
gp = Numo::Gnuplot.default
|
13
|
+
gp.reset
|
14
|
+
gp.unset :multiplot # added
|
15
|
+
gp.set terminal:'svg'
|
16
|
+
gp.set output:tempfile_svg.path
|
17
|
+
gp.instance_eval(&@block)
|
18
|
+
### gp.unset 'output' # commented out
|
19
|
+
svg = File.read(tempfile_svg.path)
|
20
|
+
tempfile_svg.close
|
21
|
+
["image/svg+xml",svg]
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
class Numo::Gnuplot::NotePlot
|
26
|
+
include ExtendNP
|
27
|
+
alias_method :old_to_iruby, :to_iruby
|
28
|
+
alias_method :to_iruby, :new_to_iruby
|
29
|
+
end
|
30
|
+
|
7
31
|
module Gnutemplate
|
8
32
|
class Error < StandardError; end
|
9
|
-
|
10
33
|
|
11
34
|
def note_line(data)
|
12
35
|
Numo.noteplot do
|
@@ -112,11 +135,18 @@ module Gnutemplate
|
|
112
135
|
end
|
113
136
|
end
|
114
137
|
|
115
|
-
|
138
|
+
# いずれかはここからargsを返せるようにする
|
139
|
+
# set terminal部の扱いは考えなければならない(多分、_drow, _noteにif...set...end だけ残せばいい)
|
140
|
+
def histogram(data, labels: nil, pileup: true,
|
116
141
|
xmin: nil, xmax: nil, ymin: 0, ymax: nil, bins: 10,
|
117
142
|
figsize: 1.0, rotate_xtics: 45,
|
118
143
|
fill: true, alpha: 33, background: nil,
|
119
|
-
file: nil
|
144
|
+
file: nil)
|
145
|
+
|
146
|
+
if !file.nil?
|
147
|
+
set terminal: "gif"
|
148
|
+
set output: file
|
149
|
+
end
|
120
150
|
|
121
151
|
data = [data] if data[0].kind_of?(Numeric) || data[0].nil?
|
122
152
|
|
@@ -128,8 +158,86 @@ module Gnutemplate
|
|
128
158
|
freqs = data.map {|d| d.to_a.compact.histogram(bins, min: xmin, max: xmax) }
|
129
159
|
ymax ||= freqs.map{ _1[1] }.flatten.max * 1.1
|
130
160
|
|
161
|
+
if pileup
|
162
|
+
###########
|
163
|
+
###
|
164
|
+
###########
|
165
|
+
|
166
|
+
set size: "#{figsize},#{figsize}"
|
167
|
+
set style: "fill solid" if fill
|
168
|
+
|
169
|
+
xticinterval = (xmax-xmin).to_f / bins
|
170
|
+
set xtics: "#{xmin-xticinterval}, #{xticinterval}, #{xmax+xticinterval}"
|
171
|
+
set(:xtics, "rotate by #{rotate_xtics}") if rotate_xtics
|
172
|
+
|
173
|
+
set xrange: (xmin-xticinterval)..(xmax+xticinterval)
|
174
|
+
set yrange: ymin..ymax
|
175
|
+
|
176
|
+
args = background ? ["[#{xmin}:#{xmax}] #{ymax} with filledc above y=#{ymin} fc \"##{background}\" notitle", {}] : []
|
177
|
+
|
178
|
+
freqs.each_with_index do |f, i|
|
179
|
+
args.push f[0], f[1]
|
180
|
+
|
181
|
+
if labels
|
182
|
+
args.push({:with => :boxes, :title => labels[i], :fillcolor => "rgb \"#{colors[i % 4]}\""})
|
183
|
+
else
|
184
|
+
args.push({:with => :boxes, :fillcolor => "rgb \"#{colors[i % 4]}\""})
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
plot *args
|
189
|
+
|
190
|
+
else
|
191
|
+
|
192
|
+
###########
|
193
|
+
###
|
194
|
+
###########
|
195
|
+
# set title:"Temperature"
|
196
|
+
set auto:"x"
|
197
|
+
set :style, :data, :histogram
|
198
|
+
set :style, :histogram, :cluster, gap:1
|
199
|
+
set :style, :fill, solid: 1.0 - (alpha/100.0), border:-1
|
200
|
+
set boxwidth:0.9
|
201
|
+
set :xtic, :rotate, by: rotate_xtics, scale: 0
|
202
|
+
|
203
|
+
xticinterval = (xmax-xmin).to_f / bins
|
204
|
+
set xrange: 0..((xmax-xmin) / xticinterval).to_i
|
205
|
+
|
206
|
+
xtics = freqs[0][0]
|
207
|
+
.each.with_index
|
208
|
+
.inject("(") { |result, (x, i)| result += "'#{x-xticinterval/2}-#{x+xticinterval/2}' #{i}," }
|
209
|
+
.gsub(/,$/, ")")
|
210
|
+
set xtics: xtics
|
211
|
+
|
212
|
+
labels ||= (0...(freqs.length)).map(&:to_s)
|
213
|
+
|
214
|
+
args = freqs.zip(labels).each_with_index.map do |(f, l), i|
|
215
|
+
[*f, using: 2, w: :histogram, t: labels[i], fillcolor: "rgb \"#{colors[i % 4]}\""]
|
216
|
+
end
|
217
|
+
|
218
|
+
plot *args
|
219
|
+
|
220
|
+
end # Of if pileup..else
|
221
|
+
end
|
222
|
+
|
223
|
+
def note_histogram(data, labels: nil, pileup: true,
|
224
|
+
xmin: nil, xmax: nil, ymin: 0, ymax: nil, bins: 10,
|
225
|
+
figsize: 1.0, rotate_xtics: 45,
|
226
|
+
fill: true, alpha: 33, background: nil,
|
227
|
+
file: nil)
|
228
|
+
|
131
229
|
Numo.noteplot do
|
132
230
|
|
231
|
+
data = [data] if data[0].kind_of?(Numeric) || data[0].nil?
|
232
|
+
|
233
|
+
alpha_hex = (alpha * 256 / 100).to_s(16).upcase
|
234
|
+
colors = ["##{alpha_hex}CC0000", "##{alpha_hex}00CC00", "##{alpha_hex}0000CC", "##{alpha_hex}888800"]
|
235
|
+
|
236
|
+
xmax ||= data.map(&:to_a).flatten.compact.max
|
237
|
+
xmin ||= data.map(&:to_a).flatten.compact.min
|
238
|
+
freqs = data.map {|d| d.to_a.compact.histogram(bins, min: xmin, max: xmax) }
|
239
|
+
ymax ||= freqs.map{ _1[1] }.flatten.max * 1.1
|
240
|
+
|
133
241
|
if !file.nil?
|
134
242
|
set terminal: "gif"
|
135
243
|
set output: file
|
@@ -203,7 +311,7 @@ module Gnutemplate
|
|
203
311
|
xmin: nil, xmax: nil, ymin: 0, ymax: nil, bins: 10,
|
204
312
|
figsize: 1.0, rotate_xtics: 45,
|
205
313
|
fill: true, alpha: 33, background: nil,
|
206
|
-
file: nil
|
314
|
+
file: nil)
|
207
315
|
|
208
316
|
data = [data] if data[0].kind_of?(Numeric) || data[0].nil?
|
209
317
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gnutemplate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- showata
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-10-
|
11
|
+
date: 2023-10-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: numo-gnuplot
|