ctioga2 0.4 → 0.5

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 (43) hide show
  1. data/Changelog +16 -0
  2. data/lib/ctioga2/commands/arguments.rb +5 -2
  3. data/lib/ctioga2/commands/commands.rb +45 -13
  4. data/lib/ctioga2/commands/context.rb +9 -1
  5. data/lib/ctioga2/commands/doc/help.rb +2 -2
  6. data/lib/ctioga2/commands/doc/html.rb +8 -8
  7. data/lib/ctioga2/commands/doc/introspection.rb +7 -5
  8. data/lib/ctioga2/commands/parsers/file.rb +123 -120
  9. data/lib/ctioga2/commands/parsers/old-file.rb +191 -0
  10. data/lib/ctioga2/commands/strings.rb +2 -2
  11. data/lib/ctioga2/data/datacolumn.rb +5 -2
  12. data/lib/ctioga2/data/dataset.rb +3 -13
  13. data/lib/ctioga2/data/indexed-dtable.rb +43 -11
  14. data/lib/ctioga2/data/stack.rb +65 -8
  15. data/lib/ctioga2/graphics/elements.rb +2 -1
  16. data/lib/ctioga2/graphics/elements/containers.rb +22 -3
  17. data/lib/ctioga2/graphics/elements/primitive.rb +5 -5
  18. data/lib/ctioga2/graphics/elements/xyz-contour.rb +123 -0
  19. data/lib/ctioga2/graphics/generator.rb +31 -5
  20. data/lib/ctioga2/graphics/legends.rb +44 -3
  21. data/lib/ctioga2/graphics/legends/area.rb +28 -9
  22. data/lib/ctioga2/graphics/legends/items.rb +34 -23
  23. data/lib/ctioga2/graphics/legends/multicols.rb +132 -0
  24. data/lib/ctioga2/graphics/styles.rb +3 -1
  25. data/lib/ctioga2/graphics/styles/axes.rb +10 -4
  26. data/lib/ctioga2/graphics/styles/base.rb +65 -11
  27. data/lib/ctioga2/graphics/styles/colormap.rb +2 -1
  28. data/lib/ctioga2/graphics/styles/contour.rb +141 -0
  29. data/lib/ctioga2/graphics/styles/curve.rb +49 -67
  30. data/lib/ctioga2/graphics/styles/drawable.rb +17 -8
  31. data/lib/ctioga2/graphics/styles/factory.rb +79 -38
  32. data/lib/ctioga2/graphics/styles/legend.rb +49 -6
  33. data/lib/ctioga2/graphics/styles/plot.rb +10 -9
  34. data/lib/ctioga2/graphics/styles/sheet.rb +11 -11
  35. data/lib/ctioga2/graphics/styles/texts.rb +38 -9
  36. data/lib/ctioga2/graphics/types.rb +20 -1
  37. data/lib/ctioga2/graphics/types/dimensions.rb +7 -1
  38. data/lib/ctioga2/metabuilder/types/lists.rb +4 -4
  39. data/lib/ctioga2/metabuilder/types/numbers.rb +3 -3
  40. data/lib/ctioga2/metabuilder/types/styles.rb +2 -2
  41. data/lib/ctioga2/plotmaker.rb +12 -1
  42. data/lib/ctioga2/utils.rb +27 -3
  43. metadata +8 -4
@@ -0,0 +1,141 @@
1
+ # contour.rb: the style of a contour plot
2
+ # copyright (c) 2009 by Vincent Fourmond
3
+
4
+ # This program is free software; you can redistribute it and/or modify
5
+ # it under the terms of the GNU General Public License as published by
6
+ # the Free Software Foundation; either version 2 of the License, or
7
+ # (at your option) any later version.
8
+
9
+ # This program is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ # GNU General Public License for more details (in the COPYING file).
13
+
14
+ require 'ctioga2/utils'
15
+ require 'ctioga2/log'
16
+
17
+
18
+ # This module contains all the classes used by ctioga
19
+ module CTioga2
20
+
21
+ Version::register_svn_info('$Revision$', '$Date$')
22
+
23
+ module Graphics
24
+
25
+ module Styles
26
+
27
+
28
+ # The base for a contour plot
29
+ class BaseContourStyle < BasicStyle
30
+
31
+ # Whether or not to use conrec for the contour computation
32
+ typed_attribute :conrec, 'boolean'
33
+
34
+ def make_contour(table, level, opts = {})
35
+ if @conrec && (! opts.key? 'method')
36
+ opts['method'] = 'conrec'
37
+ end
38
+ return table.make_contour(level, opts)
39
+ end
40
+
41
+ end
42
+
43
+
44
+ # This class expands on the previous one to provide for
45
+ # mechanisms to draw many related contour plots.
46
+ class ContoursStyle < BaseContourStyle
47
+
48
+ # The overall number of ticks (including minor ticks when
49
+ # there is). May be approximative
50
+ typed_attribute :number, 'integer'
51
+
52
+ # Whether or not to "stick" to natural numbers for the
53
+ typed_attribute :use_naturals, 'boolean'
54
+
55
+ # Number of subticks
56
+ typed_attribute :minor_number, 'integer'
57
+
58
+ # Relative scale of the minor ticks. Used if the absolute
59
+ # width is not specified.
60
+ typed_attribute :minor_scale, 'float'
61
+
62
+ # Line style of minor ticks.
63
+ sub_style :minor, LineStyle
64
+
65
+ def initialize()
66
+ @number = 20
67
+ @use_naturals = true
68
+ @minor_number = 4
69
+ @minor_scale = 0.6
70
+ end
71
+
72
+ # Computes and plots the contours according to the style,
73
+ # using the given color map.
74
+ def plot_contours(t, table, zmin, zmax, color_map)
75
+
76
+ ticks = []
77
+ minor_ticks = []
78
+
79
+ if @use_naturals
80
+ bdz = (zmax - zmin)*@minor_number/@number
81
+ bdz = Utils.closest_subdivision(bdz)
82
+
83
+ zb = ((zmin/bdz).ceil) * bdz
84
+ z = zb
85
+ i = 0
86
+ while z < zmax
87
+ ticks << z
88
+ z = zb + i*bdz
89
+ i += 1
90
+ end
91
+
92
+ sbdz = bdz/@minor_number
93
+ sbdz = Utils.closest_subdivision(sbdz, false)
94
+
95
+ zb = ((zmin/sbdz).ceil) * sbdz
96
+ z = zb
97
+ i = 0
98
+ idx = 0
99
+ while z < zmax
100
+ if ticks[idx] == z
101
+ idx += 1
102
+ else
103
+ minor_ticks << z
104
+ end
105
+ i += 1
106
+ z = zb + i*sbdz
107
+ end
108
+ else
109
+ dz = (zmax - zmin)/@number
110
+ @number.times do |i|
111
+ ticks << zmin + (i + 0.5) * dz
112
+ end
113
+ end
114
+
115
+ for lvl in ticks
116
+ t.context do
117
+ t.stroke_color = color_map.z_color(lvl, zmin, zmax)
118
+ contour = make_contour(table, lvl)
119
+ t.append_points_with_gaps_to_path(*contour)
120
+ t.stroke
121
+ end
122
+ end
123
+
124
+ # Minor ticks, when applicable !
125
+ t.context do
126
+ t.line_width = t.line_width * @minor_scale
127
+ @minor.set_stroke_style(t) if @minor
128
+ for lvl in minor_ticks
129
+ t.stroke_color = color_map.z_color(lvl, zmin, zmax)
130
+ contour = make_contour(table, lvl)
131
+ t.append_points_with_gaps_to_path(*contour)
132
+ t.stroke
133
+ end
134
+ end
135
+
136
+ end
137
+ end
138
+ end
139
+ end
140
+ end
141
+
@@ -17,7 +17,7 @@ require 'ctioga2/log'
17
17
  # This module contains all the classes used by ctioga
18
18
  module CTioga2
19
19
 
20
- Version::register_svn_info('$Revision: 349 $', '$Date: 2012-12-25 22:23:27 +0100 (Tue, 25 Dec 2012) $')
20
+ Version::register_svn_info('$Revision: 416 $', '$Date: 2013-08-23 00:35:49 +0200 (Fri, 23 Aug 2013) $')
21
21
 
22
22
  module Graphics
23
23
 
@@ -28,61 +28,69 @@ module CTioga2
28
28
  # \todo maybe for objects different than Curve2D, a subclass of
29
29
  # CurveStyle could be used ? This way, we could have clearly
30
30
  # separated legends and the like ?
31
- #
32
- # @todo This should probably be a subclass of basicStyle, to
33
- # handle style sheets.
34
- class CurveStyle
31
+ class CurveStyle < BasicStyle
35
32
 
36
33
  # The style of the line that is drawn, as a StrokeStyle.
37
- attr_accessor :line
34
+ sub_style :line, StrokeStyle
38
35
 
39
36
  # The style of markers that should be drawn, as a MarkerStyle.
40
- attr_accessor :marker
37
+ sub_style :marker, MarkerStyle
41
38
 
42
39
  # The text of the legend, if there is one.
43
- attr_accessor :legend
40
+ typed_attribute :legend, 'text'
44
41
 
45
42
  # The style of the error bars when needed, as a ErrorBarStyle.
46
- attr_accessor :error_bar
43
+ sub_style :error_bar, ErrorBarStyle
47
44
 
48
45
  # Filling of the curve, if applicable
49
- attr_accessor :fill
46
+ sub_style :fill, CurveFillStyle
50
47
 
51
48
  # Details of the location of the curve, a LocationStyle object.
52
- attr_accessor :location
49
+ sub_style :location, LocationStyle, nil, true
53
50
 
54
51
  # Whether in a region plot, the curve should be above or below
55
52
  # the filled region.
56
- attr_accessor :region_position
53
+ typed_attribute :region_position, "region-side"
57
54
 
58
55
  # A path style.
59
56
  #
60
- # @todo Ideas for a path tyle include
57
+ # @todo Ideas for a path style include
61
58
  # - plain lines
62
59
  # - impulses ?
63
60
  # - splines
64
61
  # See gnuplot help for "plot with" for inspiration.
65
- attr_accessor :path_style
62
+ #
63
+ # For now completely useless !
64
+ typed_attribute :path_style, 'text'
66
65
 
67
66
  # A colormap for strokes (only for XYZ data)
68
67
  #
69
68
  # @todo There should be a very clear way to mark curve style
70
69
  # elements which are specific to certain kinds of plots (and
71
70
  # warn the user about misuses ?)
72
- attr_accessor :color_map
71
+ typed_attribute :color_map, 'colormap'
73
72
 
74
73
  # The name of an axis to create to use for the display of the
75
74
  # Z scale.
76
75
  #
77
76
  # @todo specify the behaviour when the axis exists.
78
- attr_accessor :zaxis
77
+ typed_attribute :zaxis, 'text'
79
78
 
80
79
  # A colormap for markers (only for XYZ data)
81
- attr_accessor :marker_color_map
80
+ typed_attribute :marker_color_map, 'colormap'
82
81
 
83
82
  # Whether the XY display should split on NaN values (wherever)
84
- attr_accessor :split_on_nan
83
+ typed_attribute :split_on_nan, 'boolean'
84
+
85
85
 
86
+ # Style of contour plots
87
+ sub_style :contour, ContoursStyle, nil, true
88
+
89
+ # The following attributes are not styles but here to help
90
+
91
+ # The object attached to this style. It is set by
92
+ # Generator#curve_from_dataset
93
+ attr_accessor :target
86
94
 
87
95
  # True if a line should be drawn.
88
96
  def has_line?
@@ -99,62 +107,36 @@ module CTioga2
99
107
  return @legend
100
108
  end
101
109
 
102
- # Sets the values of the different sub-objects from a 'flat'
103
- # _hash_. Keys have the following meaning:
104
- # * 'line_...': a StrokeStyle for the drawing the line
105
- # * 'marker_...': a MarkerStyle for the drawing of markers
106
- # * 'legend': the legend of the curve
107
- # * '[xy]axis': the name of the axis the curve should be
108
- # plotted onto
109
- #
110
- # \todo make #legend another object derived from BasicStyle ?
111
- #
112
- # @todo This function should essentially disappear if we make
113
- # this derive from BasicStyle.
114
- def set_from_hash(hash)
115
- @line = StrokeStyle.from_hash(hash, 'line_%s')
116
- @marker = MarkerStyle.from_hash(hash, 'marker_%s')
117
- @error_bar = ErrorBarStyle.from_hash(hash, 'error_bar_%s')
118
- @location = LocationStyle.from_hash(hash, 'location_%s')
119
- @fill = CurveFillStyle.from_hash(hash, 'fill_%s')
120
-
121
- @region_position = hash['region_position']
122
-
123
- @legend = hash['legend']
124
-
125
- @path_style = hash['style']
126
-
127
- @color_map = hash['color_map']
128
-
129
- @marker_color_map = hash['marker_color_map']
130
-
131
- @split_on_nan = hash['split_on_nan']
132
-
133
- @zaxis = hash['zaxis']
134
- end
135
-
136
- # Creates a CurveStyle object straight from a hash
137
- # description. See #set_from_hash for more information.
138
- def self.from_hash(hash)
139
- a = CurveStyle.new
140
- a.set_from_hash(hash)
141
- return a
142
- end
143
-
144
-
145
110
  # Draws a legend pictogram that fills up the whole current
146
111
  # frame.
147
112
  #
148
113
  # \todo add more elements to the pictogram in case of more
149
114
  # complex things.
115
+ #
116
+ # @todo Most probably the legend pictogram should be done by
117
+ # the curve directly rather than by the style.
150
118
  def draw_legend_pictogram(t)
151
119
  t.context do
152
- if has_line?
153
- @line.set_stroke_style(t)
154
- t.stroke_line(0.0, 0.5, 1.0, 0.5)
155
- end
156
- if has_marker?
157
- @marker.draw_markers_at(t, [0.5], [0.5])
120
+ case @target
121
+ when Elements::Curve2D
122
+ if has_line?
123
+ @line.set_stroke_style(t)
124
+ t.stroke_line(0.0, 0.5, 1.0, 0.5)
125
+ end
126
+ if has_marker?
127
+ @marker.draw_markers_at(t, [0.5], [0.5])
128
+ end
129
+ when Elements::Parametric2D
130
+ if has_marker? && @marker_color_map
131
+ colors = @marker_color_map.colors.uniq
132
+ i = 1
133
+ total = colors.size + 1.0
134
+ for c in colors
135
+ @marker.draw_markers_at(t, [i/total], [0.5],
136
+ {'color' => c} )
137
+ i += 1
138
+ end
139
+ end
158
140
  end
159
141
  end
160
142
  end
@@ -17,19 +17,15 @@ require 'ctioga2/log'
17
17
  # This module contains all the classes used by ctioga
18
18
  module CTioga2
19
19
 
20
- Version::register_svn_info('$Revision: 350 $', '$Date: 2012-12-25 22:23:35 +0100 (Tue, 25 Dec 2012) $')
20
+ Version::register_svn_info('$Revision: 419 $', '$Date: 2013-08-23 01:05:42 +0200 (Fri, 23 Aug 2013) $')
21
21
 
22
22
  module Graphics
23
23
 
24
24
  # All the styles
25
25
  module Styles
26
26
 
27
- # This class represents all the stylistic information to stroke
28
- # a Tioga path.
29
- class StrokeStyle < BasicStyle
30
- # The color
31
- typed_attribute :color, 'color-or-false'
32
-
27
+ # This class represents a plain line style.
28
+ class LineStyle < BasicStyle
33
29
  # The line style
34
30
  typed_attribute :style, 'line-style'
35
31
 
@@ -38,7 +34,6 @@ module CTioga2
38
34
 
39
35
  # Sets the stroke style to a FigureMaker object, _t_.
40
36
  def set_stroke_style(t)
41
- t.stroke_color = @color if @color
42
37
  t.line_type = @style if @style
43
38
  t.line_width = @width if @width
44
39
  end
@@ -52,6 +47,20 @@ module CTioga2
52
47
  end
53
48
  end
54
49
 
50
+ # This class represents all the stylistic information to stroke
51
+ # a Tioga path.
52
+ class StrokeStyle < LineStyle
53
+ # The color
54
+ typed_attribute :color, 'color-or-false'
55
+
56
+ # Sets the stroke style to a FigureMaker object, _t_.
57
+ def set_stroke_style(t)
58
+ t.stroke_color = @color if @color
59
+ super
60
+ end
61
+
62
+ end
63
+
55
64
  # This class represents all the stylistic information to draw a
56
65
  # Marker.
57
66
  #
@@ -1,5 +1,5 @@
1
1
  # factory.rb: an object in charge of generating the style for Curves
2
- # copyright (c) 2009 by Vincent Fourmond
2
+ # copyright (c) 2009, 2013 by Vincent Fourmond
3
3
 
4
4
  # This program is free software; you can redistribute it and/or modify
5
5
  # it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@ require 'ctioga2/log'
17
17
  # This module contains all the classes used by ctioga
18
18
  module CTioga2
19
19
 
20
- Version::register_svn_info('$Revision: 217 $', '$Date: 2010-12-31 16:18:20 +0100 (Fri, 31 Dec 2010) $')
20
+ Version::register_svn_info('$Revision: 432 $', '$Date: 2013-08-23 19:06:36 +0200 (Fri, 23 Aug 2013) $')
21
21
 
22
22
  module Graphics
23
23
 
@@ -62,7 +62,7 @@ module CTioga2
62
62
  def initialize(name, type, sets, description,
63
63
  short_option = nil, disable_cmds = false)
64
64
  @name = name
65
- @type = Commands::CommandType.get_type(type)
65
+ @type = type
66
66
  @sets = sets
67
67
  @description = description
68
68
  @short_option = short_option
@@ -108,11 +108,14 @@ module CTioga2
108
108
  #
109
109
  # \todo add a way to add some more text to the description;
110
110
  # possibly a self.describe_parameter function ?
111
- def self.define_parameter(target, name, type, sets, description,
111
+ #
112
+ # @todo Remove completely the 'type' argument
113
+ def self.define_parameter(target, name, sets, description,
112
114
  short_option = nil, disable_cmds = false)
113
115
  # We define two new types:
114
116
  # - first, the color-or-auto type:
115
- base_type = Commands::CommandType.get_type(type)
117
+ # base_type = Commands::CommandType.get_type(type)
118
+ base_type = CurveStyle.attribute_type(target)
116
119
 
117
120
  if ! Commands::Interpreter.type("#{base_type.name}-or-auto")
118
121
  mb_type = base_type.type.dup
@@ -141,7 +144,7 @@ module CTioga2
141
144
  "Sets of {type: #{base_type.name}}")
142
145
  end
143
146
  param =
144
- CurveStyleFactoryParameter.new(name, type, sets,
147
+ CurveStyleFactoryParameter.new(name, base_type, sets,
145
148
  description, short_option,
146
149
  disable_cmds)
147
150
  @parameters ||= {}
@@ -151,6 +154,13 @@ module CTioga2
151
154
  @name_to_target[name] = target
152
155
  end
153
156
 
157
+ # A simple parameter is something whose target defines all, ie
158
+ # only the name and a documentation text is necessary.
159
+ def self.simple_parameter(target, text, sets = nil)
160
+ name = target.gsub(/_/, '-')
161
+ define_parameter(target, name, sets, text, nil)
162
+ end
163
+
154
164
  # Returns the Hash containing the class parameters.
155
165
  def self.parameters
156
166
  return @parameters || {}
@@ -316,71 +326,67 @@ module CTioga2
316
326
  # Now, the parameters:
317
327
 
318
328
  # Lines:
319
- define_parameter 'line_color', 'color', 'color',
320
- Sets::ColorSets, "color", "-c"
329
+ define_parameter 'line_color', 'color',
330
+ Sets::ColorSets, "line color", "-c"
321
331
 
322
- define_parameter 'line_width', 'line-width', 'float',
323
- Sets::LineWidthSets, "line width", nil
332
+ simple_parameter 'line_width', 'line width', Sets::LineWidthSets
324
333
 
325
- define_parameter 'line_style', 'line-style', 'line-style',
326
- Sets::LineStyleSets, "line style", nil
334
+ simple_parameter 'line_style', 'line style', Sets::LineStyleSets
327
335
 
328
336
  # Markers
329
- define_parameter 'marker_marker', 'marker', 'marker',
337
+ define_parameter 'marker_marker', 'marker',
330
338
  Sets::MarkerSets, "marker", '-m'
331
339
 
332
- define_parameter 'marker_color', 'marker-color', 'color',
333
- Sets::ColorSets, "marker color", nil
340
+ simple_parameter 'marker_color', "marker color", Sets::ColorSets
334
341
 
335
- define_parameter 'marker_scale', 'marker-scale', 'float',
336
- Sets::LineWidthSets, "marker scale", nil
342
+ simple_parameter 'marker_scale', "marker scale", Sets::LineWidthSets
337
343
 
338
344
  # Error bars:
339
- define_parameter 'error_bar_color', 'error-bar-color', 'color',
340
- Sets::ColorSets, "error bar color", nil
345
+ simple_parameter 'error_bar_color', "error bar color",
346
+ Sets::ColorSets
341
347
 
342
348
  # Location:
343
- define_parameter 'location_xaxis', 'xaxis', 'axis',
349
+ define_parameter 'location_xaxis', 'xaxis',
344
350
  nil, "X axis", nil, true
345
351
 
346
- define_parameter 'location_yaxis', 'yaxis', 'axis',
352
+ define_parameter 'location_yaxis', 'yaxis',
347
353
  nil, "Y axis", nil, true
348
354
 
349
355
  # Now, fill style
350
- define_parameter 'fill_y0', 'fill', 'fill-until',
356
+ define_parameter 'fill_y0', 'fill',
351
357
  {}, "Fill until", nil
352
358
 
353
- define_parameter 'fill_color', 'fill-color', 'color',
354
- Sets::ColorSets, "fill color", nil
359
+ simple_parameter 'fill_color', "fill color", Sets::ColorSets
355
360
 
356
- define_parameter 'fill_transparency', 'fill-transparency', 'float',
357
- {}, "Fill transparency", nil
361
+ simple_parameter 'fill_transparency', 'fill transparency', {}
358
362
 
359
363
  # Region handling
360
- define_parameter 'region_position', 'region-side', 'region-side',
364
+ define_parameter 'region_position', 'region-side',
361
365
  {"default" => [:above, :below]}, "region side", nil
362
366
 
363
367
 
364
- define_parameter 'style', 'style', 'text',
365
- {}, "Path style", nil
368
+ simple_parameter 'path_style', 'path style', {}
366
369
 
367
370
  # Only for xyz-maps or xy-parametric
368
- define_parameter 'color_map', 'color-map', 'colormap',
369
- nil, "Color map", nil
370
-
371
+ simple_parameter 'color_map', 'color map'
371
372
 
372
- define_parameter 'zaxis', 'zaxis', 'text',
373
- nil, "Name for the Z axis", nil
373
+ simple_parameter 'zaxis', "name for the Z axis"
374
374
 
375
375
  ## @todo For xy-parametric, there should be a way to specify
376
376
  ## to which z value the maps apply (ie lines = y2, marker =
377
377
  ## y3...). Although for readability, it is probably better
378
378
  ## to avoid that...
379
- define_parameter 'marker_color_map', 'marker-color-map', 'colormap',
380
- nil, "Marker color map", nil
379
+ simple_parameter 'marker_color_map', 'color map for markers'
381
380
 
382
- define_parameter 'split_on_nan', 'split-on-nan', 'boolean',
383
- nil, "Split on NaN", nil
381
+ simple_parameter 'split_on_nan', 'split on NaN'
382
+
383
+
384
+ # Contour plot styles
385
+ simple_parameter 'contour_conrec', "use CONREC for contouring"
386
+ simple_parameter 'contour_number', "overall number of level lines"
387
+ simple_parameter 'contour_minor_number', "number of minor level lines between major ones (approx)"
388
+ simple_parameter 'contour_minor_scale', "relative scale of minor level lines"
389
+ simple_parameter 'contour_minor_style', "minor ticks line style"
384
390
 
385
391
 
386
392
  # And finally, we register all necessary commands...
@@ -462,6 +468,41 @@ module CTioga2
462
468
  end
463
469
  end
464
470
  end
471
+
472
+ # Now, we document some aspects of the above created commands
473
+ c = Commands::Command
474
+
475
+ c.document_command("color-map", <<EOD)
476
+ Sets the color map for the subsequent curves, until cancelled by an
477
+ @auto@ argument.
478
+
479
+ Color maps are used for 3D plots, ie under the effet of
480
+ {command: contour}, {command: xyz-map} and {command: xy-parametric}.
481
+ EOD
482
+
483
+ c.document_command("contour-conrec", <<EOD)
484
+ If on, the subsequent curves will use the CONREC algorithm for
485
+ contouring. In the opposite case, the contouring algorithm of Gri is
486
+ used.
487
+
488
+ Only useful when {command: contour} is in effect.
489
+ EOD
490
+
491
+ c.document_command("split-on-nan", <<EOD)
492
+ In general, the NaN (not a number, ie invalid data points in the
493
+ dataset) in a dataset are silently ignored. When this option is on,
494
+ the lines of {command: xy-plot}-style plots are split upon
495
+ encountering a NaN.
496
+ EOD
497
+
498
+ c.document_command("zaxis", <<EOD)
499
+ Sets the name of the zaxis for the subsequent curves. This must be an
500
+ axis that has been previously created using {command: new-zaxis}.
501
+
502
+ This axis will be used to display the colormaps of the following
503
+ curve.
504
+ EOD
505
+
465
506
  end
466
507
  end
467
508