daru_plotly 0.1.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 +7 -0
- data/.gitignore +18 -0
- data/.rspec +2 -0
- data/.travis.yml +17 -0
- data/CODE_OF_CONDUCT.md +49 -0
- data/Dockerfile +21 -0
- data/Gemfile +4 -0
- data/README.md +11 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/daru_plotly.gemspec +32 -0
- data/examples/001.csv +6453 -0
- data/examples/O_TUKIBETSU_NENREI.csv +107 -0
- data/examples/plots.ipynb +932 -0
- data/examples/wine.csv +1 -0
- data/lib/daru_plotly.rb +20 -0
- data/lib/initializer/category.rb +11 -0
- data/lib/initializer/dataframe.rb +58 -0
- data/lib/initializer/vector.rb +44 -0
- data/lib/version.rb +5 -0
- metadata +203 -0
data/examples/wine.csv
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
type,fixed acidity,volatile acidity,citric acid,residual sugar,chlorides,free sulfur dioxide,total sulfur dioxide,density,pH,sulphates,alcohol,quality
|
data/lib/daru_plotly.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'initializer/category'
|
2
|
+
require 'initializer/dataframe'
|
3
|
+
require 'initializer/vector'
|
4
|
+
require 'daru'
|
5
|
+
|
6
|
+
module Daru::Plotly::Initializer
|
7
|
+
[:plot, :generate_data].each do |method_name|
|
8
|
+
define_method method_name do |data, opts|
|
9
|
+
if data.is_a? Daru::DataFrame
|
10
|
+
Daru::Plotly::Initializer::DataFrame.send(method_name ,data, opts)
|
11
|
+
elsif data.is_a? Daru::Vector
|
12
|
+
Daru::Plotly::Initializer::Vector.send(method_name, data, opts)
|
13
|
+
else
|
14
|
+
raise ArgumentError, 'first argument should be Daru::DataFrame or Daru::Vector.'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
module_function :plot, :generate_data
|
20
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'rbplotly'
|
2
|
+
require 'daru'
|
3
|
+
|
4
|
+
module Daru::Plotly
|
5
|
+
module Initializer
|
6
|
+
module DataFrame
|
7
|
+
def self.plot(df, opts={})
|
8
|
+
raise ArgumentError, "first argument should be Daru::DataFrame, not #{df.class}." unless df.is_a?(Daru::DataFrame)
|
9
|
+
data = opts[:data] || generate_data(df, opts)
|
10
|
+
layout = { width: (opts[:width] || 1000), height: (opts[:height] || 500) }.merge(opts[:layout] || {})
|
11
|
+
|
12
|
+
plot = Plotly::Plot.new(data: data, layout: layout)
|
13
|
+
yield plot if block_given?
|
14
|
+
plot
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.extract_type(plot_type)
|
18
|
+
supported_types = [:scatter, :bar, :pie, :heatmap]
|
19
|
+
|
20
|
+
case plot_type
|
21
|
+
when *supported_types
|
22
|
+
plot_type
|
23
|
+
when :histogram
|
24
|
+
raise ArgumentError, 'You can plot histogram only with Daru::Vector, not Daru::DataFrame.'
|
25
|
+
when nil
|
26
|
+
:scatter
|
27
|
+
else
|
28
|
+
raise ArgumentError, "Type must be included in #{supported_types}"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.generate_data(df, opts)
|
33
|
+
case type = extract_type(opts[:type])
|
34
|
+
when :pie
|
35
|
+
labels = df[opts[:labels] || :labels].to_a
|
36
|
+
values = df[opts[:values] || :values].to_a
|
37
|
+
[{ labels: labels, values: values, type: :pie }.merge(opts[:opts] || {})]
|
38
|
+
when :heatmap
|
39
|
+
[{
|
40
|
+
z: df.data.map { |vector| vector.to_a }.transpose,
|
41
|
+
x: df.vectors.to_a,
|
42
|
+
y: df.index.to_a,
|
43
|
+
type: type
|
44
|
+
}]
|
45
|
+
else
|
46
|
+
x = df[opts[:x] || :x].to_a
|
47
|
+
mode = (Array(opts[:mode]) || [:markers]).map(&:to_s).join('+')
|
48
|
+
Array(opts[:y] || :y).map do |vector_name|
|
49
|
+
vector = df[vector_name]
|
50
|
+
{
|
51
|
+
x: x, y: vector.to_a, type: type, mode: mode, name: vector_name
|
52
|
+
}.merge(opts[:opts] || {})
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'rbplotly'
|
2
|
+
require 'daru'
|
3
|
+
|
4
|
+
module Daru::Plotly
|
5
|
+
module Initializer
|
6
|
+
module Vector
|
7
|
+
def self.plot(vector, opts={})
|
8
|
+
raise ArgumentError, "first argument should be Daru::Vector, not #{vector.class}." unless vector.is_a?(Daru::Vector)
|
9
|
+
data = generate_data(vector, opts)
|
10
|
+
layout = { width: (opts[:width] || 1000), height: (opts[:height] || 500) }.merge(opts[:layout] || {})
|
11
|
+
|
12
|
+
plot = Plotly::Plot.new(data: data, layout: layout)
|
13
|
+
yield plot if block_given?
|
14
|
+
plot
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.extract_type(plot_type)
|
18
|
+
supported_types = [:scatter, :bar, :histogram, :pie]
|
19
|
+
|
20
|
+
case plot_type
|
21
|
+
when *supported_types
|
22
|
+
plot_type
|
23
|
+
when nil
|
24
|
+
:scatter
|
25
|
+
else
|
26
|
+
raise ArgumentError, "Type must be included in #{supported_types}."
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.generate_data(vector, opts)
|
31
|
+
type = extract_type opts[:type]
|
32
|
+
|
33
|
+
case type
|
34
|
+
when :histogram
|
35
|
+
[{ x: vector.to_a, type: :histogram }.merge(opts[:opts] || {})]
|
36
|
+
when :scatter, :bar
|
37
|
+
[{ x: vector.index.to_a, y: vector.to_a, type: type, mode: (opts[:mode]&.join('+')&.to_sym || :markers) }.merge(opts[:opts] || {})]
|
38
|
+
when :pie
|
39
|
+
[{ labels: vector.index.to_a, values: vector.to_a, type: :pie }.merge(opts[:opts] || {})]
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
data/lib/version.rb
ADDED
metadata
ADDED
@@ -0,0 +1,203 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: daru_plotly
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Yusuke Sangenya
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-05-21 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: daru
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rbplotly
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.12'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.12'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '10.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '10.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '3.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rbczmq
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: iruby
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: spreadsheet
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: nyaplot
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: gruff
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
description: Plot Daru's DataFrame with plotly.
|
154
|
+
email:
|
155
|
+
- longinus.eva@gmail.com
|
156
|
+
executables: []
|
157
|
+
extensions: []
|
158
|
+
extra_rdoc_files: []
|
159
|
+
files:
|
160
|
+
- ".gitignore"
|
161
|
+
- ".rspec"
|
162
|
+
- ".travis.yml"
|
163
|
+
- CODE_OF_CONDUCT.md
|
164
|
+
- Dockerfile
|
165
|
+
- Gemfile
|
166
|
+
- README.md
|
167
|
+
- Rakefile
|
168
|
+
- bin/console
|
169
|
+
- bin/setup
|
170
|
+
- daru_plotly.gemspec
|
171
|
+
- examples/001.csv
|
172
|
+
- examples/O_TUKIBETSU_NENREI.csv
|
173
|
+
- examples/plots.ipynb
|
174
|
+
- examples/wine.csv
|
175
|
+
- lib/daru_plotly.rb
|
176
|
+
- lib/initializer/category.rb
|
177
|
+
- lib/initializer/dataframe.rb
|
178
|
+
- lib/initializer/vector.rb
|
179
|
+
- lib/version.rb
|
180
|
+
homepage: https://github.com/genya0407/daru_plotly
|
181
|
+
licenses: []
|
182
|
+
metadata: {}
|
183
|
+
post_install_message:
|
184
|
+
rdoc_options: []
|
185
|
+
require_paths:
|
186
|
+
- lib
|
187
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
188
|
+
requirements:
|
189
|
+
- - ">="
|
190
|
+
- !ruby/object:Gem::Version
|
191
|
+
version: '0'
|
192
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
193
|
+
requirements:
|
194
|
+
- - ">="
|
195
|
+
- !ruby/object:Gem::Version
|
196
|
+
version: '0'
|
197
|
+
requirements: []
|
198
|
+
rubyforge_project:
|
199
|
+
rubygems_version: 2.5.2
|
200
|
+
signing_key:
|
201
|
+
specification_version: 4
|
202
|
+
summary: Plot Daru's DataFrame with plotly.
|
203
|
+
test_files: []
|