ctioga2 0.9 → 0.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. data/Changelog +27 -0
  2. data/bin/ct2-make-movie +92 -45
  3. data/lib/ctioga2/commands/doc/html.rb +1 -1
  4. data/lib/ctioga2/commands/doc/introspection.rb +52 -0
  5. data/lib/ctioga2/commands/doc/markup.rb +4 -0
  6. data/lib/ctioga2/commands/general-commands.rb +19 -0
  7. data/lib/ctioga2/commands/general-functions.rb +8 -1
  8. data/lib/ctioga2/commands/general-types.rb +14 -3
  9. data/lib/ctioga2/commands/parsers/file.rb +20 -3
  10. data/lib/ctioga2/data/backends/backends/math.rb +1 -1
  11. data/lib/ctioga2/data/backends/backends/text.rb +3 -3
  12. data/lib/ctioga2/data/point.rb +1 -1
  13. data/lib/ctioga2/graphics/elements.rb +1 -0
  14. data/lib/ctioga2/graphics/elements/curve2d.rb +5 -0
  15. data/lib/ctioga2/graphics/elements/primitive.rb +16 -14
  16. data/lib/ctioga2/graphics/elements/style-lists.rb +353 -0
  17. data/lib/ctioga2/graphics/elements/subplot.rb +17 -2
  18. data/lib/ctioga2/graphics/elements/tangent.rb +16 -17
  19. data/lib/ctioga2/graphics/styles.rb +1 -0
  20. data/lib/ctioga2/graphics/styles/axes.rb +63 -0
  21. data/lib/ctioga2/graphics/styles/base.rb +13 -0
  22. data/lib/ctioga2/graphics/styles/colorbrewer.rb +316 -0
  23. data/lib/ctioga2/graphics/styles/colormap.rb +47 -7
  24. data/lib/ctioga2/graphics/styles/image.rb +83 -0
  25. data/lib/ctioga2/graphics/styles/plot.rb +43 -7
  26. data/lib/ctioga2/graphics/styles/sets.rb +47 -5
  27. data/lib/ctioga2/graphics/styles/sheet.rb +18 -3
  28. data/lib/ctioga2/graphics/styles/texts.rb +49 -8
  29. data/lib/ctioga2/graphics/subplot-commands.rb +13 -13
  30. data/lib/ctioga2/graphics/types.rb +42 -10
  31. data/lib/ctioga2/graphics/types/boundaries.rb +3 -2
  32. data/lib/ctioga2/graphics/types/boxes.rb +13 -0
  33. data/lib/ctioga2/graphics/types/dimensions.rb +4 -1
  34. data/lib/ctioga2/graphics/types/location.rb +13 -2
  35. data/lib/ctioga2/graphics/types/point.rb +86 -0
  36. data/lib/ctioga2/metabuilder/types/styles.rb +2 -2
  37. data/lib/ctioga2/plotmaker.rb +3 -0
  38. data/lib/ctioga2/ruby.rb +49 -0
  39. data/lib/ctioga2/utils.rb +34 -0
  40. data/lib/ctioga2/version.rb +2 -2
  41. metadata +8 -4
@@ -173,11 +173,26 @@ module CTioga2
173
173
  # We wrap the call within a subplot
174
174
  t.subplot(frames.to_frame_margins(t)) do
175
175
 
176
+
176
177
  # Setup various aspects of the figure maker object.
177
178
  @style.setup_figure_maker(t)
178
179
 
179
- # Manually creating the plot:
180
- t.set_bounds(real_boundaries.to_a)
180
+ #
181
+ if @style.frame_real_size
182
+ t.set_bounds([0.0, 1.0, 0.0, 1.0])
183
+ dx = t.convert_figure_to_output_dx(1.0)
184
+ dy = t.convert_figure_to_output_dy(1.0)
185
+
186
+ frm = [0.0, dx/@style.frame_real_size,
187
+ -dy/@style.frame_real_size, 0.0]
188
+ @computed_boundaries = {
189
+ :bottom => Types::SimpleRange.new(frm[0], frm[1]),
190
+ :left => Types::SimpleRange.new(frm[2], frm[3]),
191
+ }
192
+ t.set_bounds(frm)
193
+ else
194
+ t.set_bounds(real_boundaries.to_a)
195
+ end
181
196
 
182
197
  # First, gather up all elements by depth
183
198
 
@@ -22,7 +22,6 @@ module CTioga2
22
22
  module Elements
23
23
 
24
24
  module Tangents
25
-
26
25
  TangentOptions = {
27
26
  'xfrom' => 'float',
28
27
  'xto' => 'float',
@@ -30,9 +29,10 @@ module CTioga2
30
29
  'yto' => 'float',
31
30
  'xextent' => 'float',
32
31
  'yextent' => 'float',
33
- 'nbavg' => 'integer'
34
- }.update(TiogaPrimitiveCall::ArrowOptions)
35
-
32
+ 'nbavg' => 'integer',
33
+ 'base-style' => 'text'
34
+ }.update(Styles::ArrowStyle::options_hash)
35
+
36
36
  TiogaPrimitiveCall.
37
37
  primitive("tangent", "tangent", [ 'data-point'],
38
38
  TangentOptions) do |t, point,options|
@@ -49,8 +49,8 @@ module CTioga2
49
49
  elsif d = options['yextent']
50
50
  options['tail'] = [x, y]
51
51
  options['head'] = [x+d/slope, y + d]
52
- elsif options['xfrom'] || options['yfrom'] ||
53
- options['xto'] || options['yto']
52
+ elsif (options['xfrom'] || options['yfrom'] ||
53
+ options['xto'] || options['yto'])
54
54
  if xf = options['xfrom']
55
55
  options['tail'] = [xf, y - (x - xf)*slope]
56
56
  elsif yf = options['yfrom']
@@ -71,7 +71,7 @@ module CTioga2
71
71
  options['head'] = [x, y]
72
72
  dx = point.dx(nb) * 10
73
73
  options['tail'] = [x-dx, y - dx*slope]
74
- options['line_width'] = 0
74
+ options['width'] = 0
75
75
  options['tail_marker'] = "None"
76
76
  end
77
77
 
@@ -80,18 +80,17 @@ module CTioga2
80
80
  options['head_color'])
81
81
  options['color'] = $last_curve_style.line.color
82
82
  end
83
-
84
- # Now, we delete elements from the hash that don't have
85
- # anything to do there:
86
- for k in TangentOptions.keys -
87
- TiogaPrimitiveCall::ArrowOptions.keys
88
- options.delete k
89
- end
90
-
91
- t.show_arrow(options)
83
+
84
+ st_name = options['base-style'] || "base"
85
+ style = Styles::StyleSheet.style_for(Styles::ArrowStyle ,st_name)
86
+ style.set_from_hash(options)
87
+
88
+ style.draw_arrow(t, *options['tail'], *options['head'])
92
89
  end
93
90
  end
94
-
91
+
92
+ Commands::make_alias_for_option 'draw-tangent', 'width', 'line_width', true
93
+ Commands::make_alias_for_option 'draw-tangent', 'style', 'line_style', true
95
94
  end
96
95
  end
97
96
  end
@@ -18,6 +18,7 @@ require 'ctioga2/graphics/styles/arrows'
18
18
  require 'ctioga2/graphics/styles/box'
19
19
  require 'ctioga2/graphics/styles/location'
20
20
  require 'ctioga2/graphics/styles/texts'
21
+ require 'ctioga2/graphics/styles/image'
21
22
  require 'ctioga2/graphics/styles/carrays'
22
23
 
23
24
  require 'ctioga2/graphics/styles/gradients'
@@ -91,6 +91,7 @@ module CTioga2
91
91
 
92
92
  @tick_label_style = FullTextStyle.new
93
93
  @tick_label_style.scale = Types::Dimension.new(:dy, 0.8)
94
+
94
95
  @axis_label = TextLabel.new(label)
95
96
  @log = false
96
97
  @ticks_side = {}
@@ -132,10 +133,72 @@ minor_tick_length minor_tick_width)
132
133
  end
133
134
 
134
135
  spec.update(@ticks_side)
136
+
137
+ # We don't allow Tioga to draw tick labels by itself
138
+ type = spec['type']
139
+ spec['type'] = case spec['type']
140
+ when Tioga::FigureConstants::AXIS_WITH_MAJOR_TICKS_AND_NUMERIC_LABELS
141
+ Tioga::FigureConstants::AXIS_WITH_MAJOR_TICKS_ONLY
142
+ when Tioga::FigureConstants::AXIS_WITH_TICKS_AND_NUMERIC_LABELS
143
+ Tioga::FigureConstants::AXIS_WITH_TICKS_ONLY
144
+ else
145
+ spec['type']
146
+ end
135
147
  t.show_axis(spec)
148
+ # Now, we draw axis ticks
149
+ if type == Tioga::FigureConstants::AXIS_WITH_MAJOR_TICKS_AND_NUMERIC_LABELS || type == Tioga::FigureConstants::AXIS_WITH_TICKS_AND_NUMERIC_LABELS
150
+
151
+ fnc = info['vertical'] ? :convert_figure_to_frame_y : :convert_figure_to_frame_x
152
+ stl = @tick_label_style.dup
153
+
154
+
155
+ stl.shift ||= Types::Dimension.new(:dy, info['shift'])
156
+
157
+
158
+ # @todo integrate to the
159
+ shift_def = (
160
+ @location.base_location == :bottom ||
161
+ @location.base_location == :at_y_origin ||
162
+ @location.base_location == :right
163
+ ) ? 0.3 : 0.4
164
+ stl.shift = Types::Dimension.new(:dy, stl.shift.to_dy(t) + shift_def)
165
+
166
+ stl.valign ||= (
167
+ @location.base_location == :bottom ||
168
+ @location.base_location == :at_y_origin ||
169
+ @location.base_location == :right
170
+ ) ? Tioga::FigureConstants::ALIGNED_AT_TOP : Tioga::FigureConstants::ALIGNED_AT_BOTTOM
171
+
172
+ spec['labels'].size.times do |i|
173
+ pos = spec['major_ticks'][i]
174
+ label = spec['labels'][i]
175
+ pos = t.send(fnc, pos)
176
+
177
+ next unless label
178
+
179
+
180
+ nm = "axis-tick#{@index}-#{i}"
181
+
182
+ stl.draw_text(t, label, spec['location'],
183
+ [:pos, pos], nm)
184
+ if watcher
185
+ watcher.watch(nm)
186
+ end
187
+ end
188
+ end
189
+
136
190
  @axis_label.loc = @location
137
191
  default = vertical? ? 'ylabel' : 'xlabel'
138
192
  nm = "axis-label#{@index}"
193
+
194
+ # stl = @axis_label.dup
195
+ # # Default to aligning the label where it counts.
196
+ # stl.valign ||= (
197
+ # @location.base_location == :bottom ||
198
+ # @location.base_location == :at_y_origin ||
199
+ # @location.base_location == :right
200
+ # ) ? Tioga::FigureConstants::ALIGNED_AT_MIDHEIGHT : Tioga::FigureConstants::ALIGNED_AT_BOTTOM
201
+
139
202
  @axis_label.draw(t, default, nm)
140
203
  if watcher
141
204
  watcher.watch(nm)
@@ -90,6 +90,19 @@ module CTioga2
90
90
  return type
91
91
  end
92
92
 
93
+ # Define an attribute to be the alias for something else.
94
+ def self.alias_for(symbol, target)
95
+ target = target.to_sym
96
+ if ! @attribute_types[target]
97
+ raise "Declaring alias #{symbol} for unexisting target #{target}"
98
+ end
99
+ symbol = symbol.to_sym
100
+ @attribute_types[symbol] = @attribute_types[target]
101
+ @attributes << symbol
102
+ alias_method symbol, target
103
+ alias_method "#{symbol}=".to_sym, "#{target}=".to_sym
104
+ end
105
+
93
106
  # Returns the type of an attribute, or _nil_ if there is no
94
107
  # attribute of that name. Handles sub-styles correctly.
95
108
  def self.attribute_type(symbol, fmt = "%s")
@@ -0,0 +1,316 @@
1
+ # This product includes color specifications and designs developed by
2
+ # Cynthia Brewer (http://colorbrewer.org/). JavaScript specs as
3
+ # packaged in the D3 library (d3js.org). Please see license at
4
+ # http://colorbrewer.org/export/LICENSE.txt
5
+ #
6
+ # This file was converted from the JS format to Ruby by Vincent Fourmond
7
+
8
+ module CTioga2
9
+ module Graphics
10
+ module Styles
11
+ module Sets
12
+ ColorBrewerSets = {"YlGn" => {
13
+ 3=> ["#f7fcb9","#addd8e","#31a354"],
14
+ 4=> ["#ffffcc","#c2e699","#78c679","#238443"],
15
+ 5=> ["#ffffcc","#c2e699","#78c679","#31a354","#006837"],
16
+ 6=> ["#ffffcc","#d9f0a3","#addd8e","#78c679","#31a354","#006837"],
17
+ 7=> ["#ffffcc","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#005a32"],
18
+ 8=> ["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#005a32"],
19
+ 9=> ["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"]
20
+ }, "YlGnBu" => {
21
+ 3=> ["#edf8b1","#7fcdbb","#2c7fb8"],
22
+ 4=> ["#ffffcc","#a1dab4","#41b6c4","#225ea8"],
23
+ 5=> ["#ffffcc","#a1dab4","#41b6c4","#2c7fb8","#253494"],
24
+ 6=> ["#ffffcc","#c7e9b4","#7fcdbb","#41b6c4","#2c7fb8","#253494"],
25
+ 7=> ["#ffffcc","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#0c2c84"],
26
+ 8=> ["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#0c2c84"],
27
+ 9=> ["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"]
28
+ }, "GnBu" => {
29
+ 3=> ["#e0f3db","#a8ddb5","#43a2ca"],
30
+ 4=> ["#f0f9e8","#bae4bc","#7bccc4","#2b8cbe"],
31
+ 5=> ["#f0f9e8","#bae4bc","#7bccc4","#43a2ca","#0868ac"],
32
+ 6=> ["#f0f9e8","#ccebc5","#a8ddb5","#7bccc4","#43a2ca","#0868ac"],
33
+ 7=> ["#f0f9e8","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#08589e"],
34
+ 8=> ["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#08589e"],
35
+ 9=> ["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"]
36
+ },"BuGn" => {
37
+ 3=> ["#e5f5f9","#99d8c9","#2ca25f"],
38
+ 4=> ["#edf8fb","#b2e2e2","#66c2a4","#238b45"],
39
+ 5=> ["#edf8fb","#b2e2e2","#66c2a4","#2ca25f","#006d2c"],
40
+ 6=> ["#edf8fb","#ccece6","#99d8c9","#66c2a4","#2ca25f","#006d2c"],
41
+ 7=> ["#edf8fb","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#005824"],
42
+ 8=> ["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#005824"],
43
+ 9=> ["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"]
44
+ },"PuBuGn" => {
45
+ 3=> ["#ece2f0","#a6bddb","#1c9099"],
46
+ 4=> ["#f6eff7","#bdc9e1","#67a9cf","#02818a"],
47
+ 5=> ["#f6eff7","#bdc9e1","#67a9cf","#1c9099","#016c59"],
48
+ 6=> ["#f6eff7","#d0d1e6","#a6bddb","#67a9cf","#1c9099","#016c59"],
49
+ 7=> ["#f6eff7","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016450"],
50
+ 8=> ["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016450"],
51
+ 9=> ["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"]
52
+ },"PuBu" => {
53
+ 3=> ["#ece7f2","#a6bddb","#2b8cbe"],
54
+ 4=> ["#f1eef6","#bdc9e1","#74a9cf","#0570b0"],
55
+ 5=> ["#f1eef6","#bdc9e1","#74a9cf","#2b8cbe","#045a8d"],
56
+ 6=> ["#f1eef6","#d0d1e6","#a6bddb","#74a9cf","#2b8cbe","#045a8d"],
57
+ 7=> ["#f1eef6","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#034e7b"],
58
+ 8=> ["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#034e7b"],
59
+ 9=> ["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"]
60
+ },"BuPu" => {
61
+ 3=> ["#e0ecf4","#9ebcda","#8856a7"],
62
+ 4=> ["#edf8fb","#b3cde3","#8c96c6","#88419d"],
63
+ 5=> ["#edf8fb","#b3cde3","#8c96c6","#8856a7","#810f7c"],
64
+ 6=> ["#edf8fb","#bfd3e6","#9ebcda","#8c96c6","#8856a7","#810f7c"],
65
+ 7=> ["#edf8fb","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#6e016b"],
66
+ 8=> ["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#6e016b"],
67
+ 9=> ["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"]
68
+ },"RdPu" => {
69
+ 3=> ["#fde0dd","#fa9fb5","#c51b8a"],
70
+ 4=> ["#feebe2","#fbb4b9","#f768a1","#ae017e"],
71
+ 5=> ["#feebe2","#fbb4b9","#f768a1","#c51b8a","#7a0177"],
72
+ 6=> ["#feebe2","#fcc5c0","#fa9fb5","#f768a1","#c51b8a","#7a0177"],
73
+ 7=> ["#feebe2","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177"],
74
+ 8=> ["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177"],
75
+ 9=> ["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"]
76
+ },"PuRd" => {
77
+ 3=> ["#e7e1ef","#c994c7","#dd1c77"],
78
+ 4=> ["#f1eef6","#d7b5d8","#df65b0","#ce1256"],
79
+ 5=> ["#f1eef6","#d7b5d8","#df65b0","#dd1c77","#980043"],
80
+ 6=> ["#f1eef6","#d4b9da","#c994c7","#df65b0","#dd1c77","#980043"],
81
+ 7=> ["#f1eef6","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#91003f"],
82
+ 8=> ["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#91003f"],
83
+ 9=> ["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"]
84
+ },"OrRd" => {
85
+ 3=> ["#fee8c8","#fdbb84","#e34a33"],
86
+ 4=> ["#fef0d9","#fdcc8a","#fc8d59","#d7301f"],
87
+ 5=> ["#fef0d9","#fdcc8a","#fc8d59","#e34a33","#b30000"],
88
+ 6=> ["#fef0d9","#fdd49e","#fdbb84","#fc8d59","#e34a33","#b30000"],
89
+ 7=> ["#fef0d9","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d7301f","#990000"],
90
+ 8=> ["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d7301f","#990000"],
91
+ 9=> ["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d7301f","#b30000","#7f0000"]
92
+ },"YlOrRd"=> {
93
+ 3=> ["#ffeda0","#feb24c","#f03b20"],
94
+ 4=> ["#ffffb2","#fecc5c","#fd8d3c","#e31a1c"],
95
+ 5=> ["#ffffb2","#fecc5c","#fd8d3c","#f03b20","#bd0026"],
96
+ 6=> ["#ffffb2","#fed976","#feb24c","#fd8d3c","#f03b20","#bd0026"],
97
+ 7=> ["#ffffb2","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#b10026"],
98
+ 8=> ["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#b10026"],
99
+ 9=> ["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"]
100
+ },"YlOrBr"=> {
101
+ 3=> ["#fff7bc","#fec44f","#d95f0e"],
102
+ 4=> ["#ffffd4","#fed98e","#fe9929","#cc4c02"],
103
+ 5=> ["#ffffd4","#fed98e","#fe9929","#d95f0e","#993404"],
104
+ 6=> ["#ffffd4","#fee391","#fec44f","#fe9929","#d95f0e","#993404"],
105
+ 7=> ["#ffffd4","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#8c2d04"],
106
+ 8=> ["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#8c2d04"],
107
+ 9=> ["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"]
108
+ },"Purples"=> {
109
+ 3=> ["#efedf5","#bcbddc","#756bb1"],
110
+ 4=> ["#f2f0f7","#cbc9e2","#9e9ac8","#6a51a3"],
111
+ 5=> ["#f2f0f7","#cbc9e2","#9e9ac8","#756bb1","#54278f"],
112
+ 6=> ["#f2f0f7","#dadaeb","#bcbddc","#9e9ac8","#756bb1","#54278f"],
113
+ 7=> ["#f2f0f7","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#4a1486"],
114
+ 8=> ["#fcfbfd","#efedf5","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#4a1486"],
115
+ 9=> ["#fcfbfd","#efedf5","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"]
116
+ },"Blues"=> {
117
+ 3=> ["#deebf7","#9ecae1","#3182bd"],
118
+ 4=> ["#eff3ff","#bdd7e7","#6baed6","#2171b5"],
119
+ 5=> ["#eff3ff","#bdd7e7","#6baed6","#3182bd","#08519c"],
120
+ 6=> ["#eff3ff","#c6dbef","#9ecae1","#6baed6","#3182bd","#08519c"],
121
+ 7=> ["#eff3ff","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#084594"],
122
+ 8=> ["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#084594"],
123
+ 9=> ["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#08519c","#08306b"]
124
+ },"Greens"=> {
125
+ 3=> ["#e5f5e0","#a1d99b","#31a354"],
126
+ 4=> ["#edf8e9","#bae4b3","#74c476","#238b45"],
127
+ 5=> ["#edf8e9","#bae4b3","#74c476","#31a354","#006d2c"],
128
+ 6=> ["#edf8e9","#c7e9c0","#a1d99b","#74c476","#31a354","#006d2c"],
129
+ 7=> ["#edf8e9","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#005a32"],
130
+ 8=> ["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#005a32"],
131
+ 9=> ["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"]
132
+ },"Oranges"=> {
133
+ 3=> ["#fee6ce","#fdae6b","#e6550d"],
134
+ 4=> ["#feedde","#fdbe85","#fd8d3c","#d94701"],
135
+ 5=> ["#feedde","#fdbe85","#fd8d3c","#e6550d","#a63603"],
136
+ 6=> ["#feedde","#fdd0a2","#fdae6b","#fd8d3c","#e6550d","#a63603"],
137
+ 7=> ["#feedde","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#8c2d04"],
138
+ 8=> ["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#8c2d04"],
139
+ 9=> ["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"]
140
+ },"Reds"=> {
141
+ 3=> ["#fee0d2","#fc9272","#de2d26"],
142
+ 4=> ["#fee5d9","#fcae91","#fb6a4a","#cb181d"],
143
+ 5=> ["#fee5d9","#fcae91","#fb6a4a","#de2d26","#a50f15"],
144
+ 6=> ["#fee5d9","#fcbba1","#fc9272","#fb6a4a","#de2d26","#a50f15"],
145
+ 7=> ["#fee5d9","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#99000d"],
146
+ 8=> ["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#99000d"],
147
+ 9=> ["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"]
148
+ },"Greys"=> {
149
+ 3=> ["#f0f0f0","#bdbdbd","#636363"],
150
+ 4=> ["#f7f7f7","#cccccc","#969696","#525252"],
151
+ 5=> ["#f7f7f7","#cccccc","#969696","#636363","#252525"],
152
+ 6=> ["#f7f7f7","#d9d9d9","#bdbdbd","#969696","#636363","#252525"],
153
+ 7=> ["#f7f7f7","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525"],
154
+ 8=> ["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525"],
155
+ 9=> ["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"]
156
+ },"PuOr"=> {
157
+ 3=> ["#f1a340","#f7f7f7","#998ec3"],
158
+ 4=> ["#e66101","#fdb863","#b2abd2","#5e3c99"],
159
+ 5=> ["#e66101","#fdb863","#f7f7f7","#b2abd2","#5e3c99"],
160
+ 6=> ["#b35806","#f1a340","#fee0b6","#d8daeb","#998ec3","#542788"],
161
+ 7=> ["#b35806","#f1a340","#fee0b6","#f7f7f7","#d8daeb","#998ec3","#542788"],
162
+ 8=> ["#b35806","#e08214","#fdb863","#fee0b6","#d8daeb","#b2abd2","#8073ac","#542788"],
163
+ 9=> ["#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788"],
164
+ 10=> ["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],
165
+ 11=> ["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"]
166
+ },"BrBG"=> {
167
+ 3=> ["#d8b365","#f5f5f5","#5ab4ac"],
168
+ 4=> ["#a6611a","#dfc27d","#80cdc1","#018571"],
169
+ 5=> ["#a6611a","#dfc27d","#f5f5f5","#80cdc1","#018571"],
170
+ 6=> ["#8c510a","#d8b365","#f6e8c3","#c7eae5","#5ab4ac","#01665e"],
171
+ 7=> ["#8c510a","#d8b365","#f6e8c3","#f5f5f5","#c7eae5","#5ab4ac","#01665e"],
172
+ 8=> ["#8c510a","#bf812d","#dfc27d","#f6e8c3","#c7eae5","#80cdc1","#35978f","#01665e"],
173
+ 9=> ["#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e"],
174
+ 10=> ["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#c7eae5","#80cdc1","#35978f","#01665e","#003c30"],
175
+ 11=> ["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e","#003c30"]
176
+ },"PRGn"=> {
177
+ 3=> ["#af8dc3","#f7f7f7","#7fbf7b"],
178
+ 4=> ["#7b3294","#c2a5cf","#a6dba0","#008837"],
179
+ 5=> ["#7b3294","#c2a5cf","#f7f7f7","#a6dba0","#008837"],
180
+ 6=> ["#762a83","#af8dc3","#e7d4e8","#d9f0d3","#7fbf7b","#1b7837"],
181
+ 7=> ["#762a83","#af8dc3","#e7d4e8","#f7f7f7","#d9f0d3","#7fbf7b","#1b7837"],
182
+ 8=> ["#762a83","#9970ab","#c2a5cf","#e7d4e8","#d9f0d3","#a6dba0","#5aae61","#1b7837"],
183
+ 9=> ["#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837"],
184
+ 10=> ["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],
185
+ 11=> ["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"]
186
+ },"PiYG"=> {
187
+ 3=> ["#e9a3c9","#f7f7f7","#a1d76a"],
188
+ 4=> ["#d01c8b","#f1b6da","#b8e186","#4dac26"],
189
+ 5=> ["#d01c8b","#f1b6da","#f7f7f7","#b8e186","#4dac26"],
190
+ 6=> ["#c51b7d","#e9a3c9","#fde0ef","#e6f5d0","#a1d76a","#4d9221"],
191
+ 7=> ["#c51b7d","#e9a3c9","#fde0ef","#f7f7f7","#e6f5d0","#a1d76a","#4d9221"],
192
+ 8=> ["#c51b7d","#de77ae","#f1b6da","#fde0ef","#e6f5d0","#b8e186","#7fbc41","#4d9221"],
193
+ 9=> ["#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221"],
194
+ 10=> ["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],
195
+ 11=> ["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"]
196
+ },"RdBu"=> {
197
+ 3=> ["#ef8a62","#f7f7f7","#67a9cf"],
198
+ 4=> ["#ca0020","#f4a582","#92c5de","#0571b0"],
199
+ 5=> ["#ca0020","#f4a582","#f7f7f7","#92c5de","#0571b0"],
200
+ 6=> ["#b2182b","#ef8a62","#fddbc7","#d1e5f0","#67a9cf","#2166ac"],
201
+ 7=> ["#b2182b","#ef8a62","#fddbc7","#f7f7f7","#d1e5f0","#67a9cf","#2166ac"],
202
+ 8=> ["#b2182b","#d6604d","#f4a582","#fddbc7","#d1e5f0","#92c5de","#4393c3","#2166ac"],
203
+ 9=> ["#b2182b","#d6604d","#f4a582","#fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac"],
204
+ 10=> ["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],
205
+ 11=> ["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"]
206
+ },"RdGy"=> {
207
+ 3=> ["#ef8a62","#ffffff","#999999"],
208
+ 4=> ["#ca0020","#f4a582","#bababa","#404040"],
209
+ 5=> ["#ca0020","#f4a582","#ffffff","#bababa","#404040"],
210
+ 6=> ["#b2182b","#ef8a62","#fddbc7","#e0e0e0","#999999","#4d4d4d"],
211
+ 7=> ["#b2182b","#ef8a62","#fddbc7","#ffffff","#e0e0e0","#999999","#4d4d4d"],
212
+ 8=> ["#b2182b","#d6604d","#f4a582","#fddbc7","#e0e0e0","#bababa","#878787","#4d4d4d"],
213
+ 9=> ["#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d"],
214
+ 10=> ["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],
215
+ 11=> ["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"]
216
+ },"RdYlBu"=> {
217
+ 3=> ["#fc8d59","#ffffbf","#91bfdb"],
218
+ 4=> ["#d7191c","#fdae61","#abd9e9","#2c7bb6"],
219
+ 5=> ["#d7191c","#fdae61","#ffffbf","#abd9e9","#2c7bb6"],
220
+ 6=> ["#d73027","#fc8d59","#fee090","#e0f3f8","#91bfdb","#4575b4"],
221
+ 7=> ["#d73027","#fc8d59","#fee090","#ffffbf","#e0f3f8","#91bfdb","#4575b4"],
222
+ 8=> ["#d73027","#f46d43","#fdae61","#fee090","#e0f3f8","#abd9e9","#74add1","#4575b4"],
223
+ 9=> ["#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4"],
224
+ 10=> ["#a50026","#d73027","#f46d43","#fdae61","#fee090","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],
225
+ 11=> ["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"]
226
+ },"Spectral"=> {
227
+ 3=> ["#fc8d59","#ffffbf","#99d594"],
228
+ 4=> ["#d7191c","#fdae61","#abdda4","#2b83ba"],
229
+ 5=> ["#d7191c","#fdae61","#ffffbf","#abdda4","#2b83ba"],
230
+ 6=> ["#d53e4f","#fc8d59","#fee08b","#e6f598","#99d594","#3288bd"],
231
+ 7=> ["#d53e4f","#fc8d59","#fee08b","#ffffbf","#e6f598","#99d594","#3288bd"],
232
+ 8=> ["#d53e4f","#f46d43","#fdae61","#fee08b","#e6f598","#abdda4","#66c2a5","#3288bd"],
233
+ 9=> ["#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd"],
234
+ 10=> ["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],
235
+ 11=> ["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"]
236
+ },"RdYlGn"=> {
237
+ 3=> ["#fc8d59","#ffffbf","#91cf60"],
238
+ 4=> ["#d7191c","#fdae61","#a6d96a","#1a9641"],
239
+ 5=> ["#d7191c","#fdae61","#ffffbf","#a6d96a","#1a9641"],
240
+ 6=> ["#d73027","#fc8d59","#fee08b","#d9ef8b","#91cf60","#1a9850"],
241
+ 7=> ["#d73027","#fc8d59","#fee08b","#ffffbf","#d9ef8b","#91cf60","#1a9850"],
242
+ 8=> ["#d73027","#f46d43","#fdae61","#fee08b","#d9ef8b","#a6d96a","#66bd63","#1a9850"],
243
+ 9=> ["#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850"],
244
+ 10=> ["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],
245
+ 11=> ["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"]
246
+ },"Accent"=> {
247
+ 3=> ["#7fc97f","#beaed4","#fdc086"],
248
+ 4=> ["#7fc97f","#beaed4","#fdc086","#ffff99"],
249
+ 5=> ["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0"],
250
+ 6=> ["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f"],
251
+ 7=> ["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17"],
252
+ 8=> ["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"]
253
+ },"Dark2"=> {
254
+ 3=> ["#1b9e77","#d95f02","#7570b3"],
255
+ 4=> ["#1b9e77","#d95f02","#7570b3","#e7298a"],
256
+ 5=> ["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e"],
257
+ 6=> ["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02"],
258
+ 7=> ["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d"],
259
+ 8=> ["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"]
260
+ },"Paired"=> {
261
+ 3=> ["#a6cee3","#1f78b4","#b2df8a"],
262
+ 4=> ["#a6cee3","#1f78b4","#b2df8a","#33a02c"],
263
+ 5=> ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99"],
264
+ 6=> ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c"],
265
+ 7=> ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f"],
266
+ 8=> ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00"],
267
+ 9=> ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6"],
268
+ 10=> ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a"],
269
+ 11=> ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99"],
270
+ 12=> ["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"]
271
+ },"Pastel1"=> {
272
+ 3=> ["#fbb4ae","#b3cde3","#ccebc5"],
273
+ 4=> ["#fbb4ae","#b3cde3","#ccebc5","#decbe4"],
274
+ 5=> ["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6"],
275
+ 6=> ["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc"],
276
+ 7=> ["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd"],
277
+ 8=> ["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","#fddaec"],
278
+ 9=> ["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","#fddaec","#f2f2f2"]
279
+ },"Pastel2"=> {
280
+ 3=> ["#b3e2cd","#fdcdac","#cbd5e8"],
281
+ 4=> ["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4"],
282
+ 5=> ["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9"],
283
+ 6=> ["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae"],
284
+ 7=> ["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc"],
285
+ 8=> ["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"]
286
+ },"Set1"=> {
287
+ 3=> ["#e41a1c","#377eb8","#4daf4a"],
288
+ 4=> ["#e41a1c","#377eb8","#4daf4a","#984ea3"],
289
+ 5=> ["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00"],
290
+ 6=> ["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33"],
291
+ 7=> ["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628"],
292
+ 8=> ["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf"],
293
+ 9=> ["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999999"]
294
+ },"Set2"=> {
295
+ 3=> ["#66c2a5","#fc8d62","#8da0cb"],
296
+ 4=> ["#66c2a5","#fc8d62","#8da0cb","#e78ac3"],
297
+ 5=> ["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854"],
298
+ 6=> ["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f"],
299
+ 7=> ["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494"],
300
+ 8=> ["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"]
301
+ },"Set3"=> {
302
+ 3=> ["#8dd3c7","#ffffb3","#bebada"],
303
+ 4=> ["#8dd3c7","#ffffb3","#bebada","#fb8072"],
304
+ 5=> ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3"],
305
+ 6=> ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462"],
306
+ 7=> ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69"],
307
+ 8=> ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5"],
308
+ 9=> ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9"],
309
+ 10=> ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd"],
310
+ 11=> ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5"],
311
+ 12=> ["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"]
312
+ }}
313
+ end
314
+ end
315
+ end
316
+ end