ctioga2 0.0 → 0.1
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.
- data/Changelog +25 -1
- data/lib/ctioga2/commands/commands.rb +13 -2
- data/lib/ctioga2/commands/doc/doc.rb +13 -17
- data/lib/ctioga2/commands/doc/documentation-commands.rb +14 -1
- data/lib/ctioga2/commands/doc/help.rb +136 -25
- data/lib/ctioga2/commands/doc/html.rb +56 -4
- data/lib/ctioga2/commands/doc/introspection.rb +45 -9
- data/lib/ctioga2/commands/doc/man.rb +7 -5
- data/lib/ctioga2/commands/doc/markup.rb +39 -12
- data/lib/ctioga2/commands/doc/wordwrap.rb +70 -0
- data/lib/ctioga2/commands/general-commands.rb +7 -4
- data/lib/ctioga2/commands/general-types.rb +27 -12
- data/lib/ctioga2/commands/interpreter.rb +2 -2
- data/lib/ctioga2/commands/parsers/command-line.rb +9 -5
- data/lib/ctioga2/commands/parsers/file.rb +5 -3
- data/lib/ctioga2/commands/type.rb +10 -3
- data/lib/ctioga2/commands/variables.rb +2 -2
- data/lib/ctioga2/data/backends/backend.rb +17 -15
- data/lib/ctioga2/data/backends/backends.rb +2 -2
- data/lib/ctioga2/data/backends/backends/gnuplot.rb +20 -5
- data/lib/ctioga2/data/backends/backends/math.rb +2 -2
- data/lib/ctioga2/data/backends/backends/text.rb +112 -17
- data/lib/ctioga2/data/backends/description.rb +10 -11
- data/lib/ctioga2/data/datacolumn.rb +73 -14
- data/lib/ctioga2/data/dataset.rb +305 -9
- data/lib/ctioga2/data/filters.rb +49 -1
- data/lib/ctioga2/data/indexed-dtable.rb +137 -0
- data/lib/ctioga2/data/point.rb +98 -7
- data/lib/ctioga2/data/stack.rb +98 -21
- data/lib/ctioga2/graphics/coordinates.rb +19 -2
- data/lib/ctioga2/graphics/elements.rb +12 -2
- data/lib/ctioga2/graphics/elements/containers.rb +14 -2
- data/lib/ctioga2/graphics/elements/contour.rb +67 -0
- data/lib/ctioga2/graphics/elements/curve2d.rb +103 -42
- data/lib/ctioga2/graphics/elements/element.rb +12 -2
- data/lib/ctioga2/graphics/elements/gradient-region.rb +94 -0
- data/lib/ctioga2/graphics/elements/parametric2d.rb +172 -0
- data/lib/ctioga2/graphics/elements/primitive.rb +37 -21
- data/lib/ctioga2/graphics/elements/region.rb +143 -0
- data/lib/ctioga2/graphics/elements/subplot.rb +92 -32
- data/lib/ctioga2/graphics/elements/tangent.rb +99 -0
- data/lib/ctioga2/graphics/elements/xyz-map.rb +126 -0
- data/lib/ctioga2/graphics/generator.rb +91 -6
- data/lib/ctioga2/graphics/legends.rb +26 -21
- data/lib/ctioga2/graphics/legends/area.rb +8 -8
- data/lib/ctioga2/graphics/legends/items.rb +5 -5
- data/lib/ctioga2/graphics/legends/storage.rb +4 -2
- data/lib/ctioga2/graphics/root.rb +24 -2
- data/lib/ctioga2/graphics/styles.rb +8 -0
- data/lib/ctioga2/graphics/styles/axes.rb +49 -23
- data/lib/ctioga2/graphics/styles/base.rb +2 -2
- data/lib/ctioga2/graphics/styles/carrays.rb +9 -2
- data/lib/ctioga2/graphics/styles/colormap.rb +272 -0
- data/lib/ctioga2/graphics/styles/curve.rb +64 -4
- data/lib/ctioga2/graphics/styles/drawable.rb +68 -9
- data/lib/ctioga2/graphics/styles/errorbar.rb +73 -0
- data/lib/ctioga2/graphics/styles/factory.rb +133 -17
- data/lib/ctioga2/graphics/styles/gradients.rb +60 -0
- data/lib/ctioga2/graphics/styles/location.rb +64 -0
- data/lib/ctioga2/graphics/styles/map-axes.rb +164 -0
- data/lib/ctioga2/graphics/styles/plot.rb +165 -62
- data/lib/ctioga2/graphics/styles/sets.rb +14 -1
- data/lib/ctioga2/graphics/styles/texts.rb +44 -34
- data/lib/ctioga2/graphics/subplot-commands.rb +94 -6
- data/lib/ctioga2/graphics/types.rb +113 -35
- data/lib/ctioga2/graphics/types/bijection.rb +3 -3
- data/lib/ctioga2/graphics/types/boundaries.rb +120 -1
- data/lib/ctioga2/graphics/types/dimensions.rb +8 -1
- data/lib/ctioga2/graphics/types/grid.rb +196 -0
- data/lib/ctioga2/graphics/types/location.rb +228 -0
- data/lib/ctioga2/graphics/types/point.rb +2 -2
- data/lib/ctioga2/log.rb +18 -18
- data/lib/ctioga2/metabuilder/type.rb +15 -3
- data/lib/ctioga2/metabuilder/types.rb +2 -2
- data/lib/ctioga2/metabuilder/types/coordinates.rb +13 -1
- data/lib/ctioga2/metabuilder/types/data.rb +50 -0
- data/lib/ctioga2/metabuilder/types/generic.rb +60 -0
- data/lib/ctioga2/metabuilder/types/lists.rb +53 -16
- data/lib/ctioga2/metabuilder/types/styles.rb +26 -45
- data/lib/ctioga2/plotmaker.rb +91 -20
- data/lib/ctioga2/postprocess.rb +8 -8
- data/lib/ctioga2/utils.rb +23 -4
- metadata +107 -75
- data/lib/ctioga2/data/merge.rb +0 -43
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
# axes.rb: the style of one axis or edge
|
|
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
|
+
# This module contains all the classes used by ctioga
|
|
18
|
+
module CTioga2
|
|
19
|
+
|
|
20
|
+
Version::register_svn_info('$Revision$', '$Date$')
|
|
21
|
+
|
|
22
|
+
module Graphics
|
|
23
|
+
|
|
24
|
+
module Styles
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
# This class handles the display of a Z axis color map, in the
|
|
28
|
+
# form of a colored bar with ticks and a label.
|
|
29
|
+
class MapAxisStyle < AxisStyle
|
|
30
|
+
|
|
31
|
+
# The actual color map
|
|
32
|
+
attr_accessor :color_map
|
|
33
|
+
|
|
34
|
+
# Zmin and Zmax boundaries
|
|
35
|
+
attr_accessor :bounds
|
|
36
|
+
|
|
37
|
+
# Size of the bar (not counting the label)
|
|
38
|
+
attr_accessor :bar_size
|
|
39
|
+
|
|
40
|
+
# Space to be left between the graph and the beginning of the
|
|
41
|
+
# graph
|
|
42
|
+
attr_accessor :bar_shift
|
|
43
|
+
|
|
44
|
+
# Space to be left on the side
|
|
45
|
+
attr_accessor :padding
|
|
46
|
+
|
|
47
|
+
# Creates a new MapAxisStyle object at the given location with
|
|
48
|
+
# the given style.
|
|
49
|
+
def initialize()
|
|
50
|
+
super()
|
|
51
|
+
|
|
52
|
+
@bar_size = Types::Dimension.new(:dy, 2, :x)
|
|
53
|
+
|
|
54
|
+
# Shifting away from the location.
|
|
55
|
+
@bar_shift = Types::Dimension.new(:dy, 0.3, :x)
|
|
56
|
+
|
|
57
|
+
## @todo maybe use different padding for left and right ?
|
|
58
|
+
@padding = Types::Dimension.new(:dy, 0.5, :x)
|
|
59
|
+
|
|
60
|
+
@decoration = AXIS_WITH_TICKS_AND_NUMERIC_LABELS
|
|
61
|
+
|
|
62
|
+
# To be implemented one day...
|
|
63
|
+
@other_side_decoration = nil
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def set_color_map(color_map, zmin, zmax)
|
|
67
|
+
@bounds = [zmin, zmax]
|
|
68
|
+
@color_map = color_map
|
|
69
|
+
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def draw_axis(t)
|
|
73
|
+
# Not beautiful at all
|
|
74
|
+
size = Types::Dimension.new(:dy, extension(t),
|
|
75
|
+
@location.orientation)
|
|
76
|
+
label_size =
|
|
77
|
+
Types::Dimension.new(:dy, labels_only_extension(t, style = nil),
|
|
78
|
+
@location.orientation)
|
|
79
|
+
|
|
80
|
+
@location.do_sub_frame(t, size) do
|
|
81
|
+
# This is a necessary workaround for a small bug
|
|
82
|
+
t.set_subframe([0,0,0,0])
|
|
83
|
+
# Here, do the correct setup, using a MarginsBox:
|
|
84
|
+
# * correctly setup the axes/edges
|
|
85
|
+
# * handle the sides correctly.
|
|
86
|
+
# * position the subplot within accordingly
|
|
87
|
+
# * use draw_axis for the axis ?
|
|
88
|
+
|
|
89
|
+
plot_box = Types::MarginsBox.
|
|
90
|
+
new(*@location.reorient_margins(@bar_shift, label_size,
|
|
91
|
+
@padding, @padding))
|
|
92
|
+
|
|
93
|
+
# We wrap the call within a subplot
|
|
94
|
+
t.subplot(plot_box.to_frame_margins(t)) do
|
|
95
|
+
bounds = if @location.vertical?
|
|
96
|
+
[0, 1, @bounds.last, @bounds.first]
|
|
97
|
+
else
|
|
98
|
+
[@bounds.first, @bounds.last, 0, 1]
|
|
99
|
+
end
|
|
100
|
+
t.set_bounds(bounds)
|
|
101
|
+
t.context do
|
|
102
|
+
t.clip_to_frame
|
|
103
|
+
cmap, zmin, zmax = *@color_map.to_colormap(t, @bounds.first,
|
|
104
|
+
@bounds.last)
|
|
105
|
+
|
|
106
|
+
sp = [0.5, zmin]
|
|
107
|
+
ep = [0.5, zmax]
|
|
108
|
+
if ! @location.vertical?
|
|
109
|
+
sp.reverse!
|
|
110
|
+
ep.reverse!
|
|
111
|
+
end
|
|
112
|
+
t.axial_shading(
|
|
113
|
+
'start_point' => sp,
|
|
114
|
+
'end_point' => ep,
|
|
115
|
+
'colormap' => cmap
|
|
116
|
+
)
|
|
117
|
+
end
|
|
118
|
+
## @todo handle axis color ?
|
|
119
|
+
t.stroke_frame
|
|
120
|
+
## @todo potentially handle decorations for the other
|
|
121
|
+
## side too.
|
|
122
|
+
|
|
123
|
+
## @todo This is a ugly hack, but Ruby doesn't allow a
|
|
124
|
+
## clean one. Though
|
|
125
|
+
## http://stackoverflow.com/questions/1251178/calling-another-method-in-super-class-in-ruby
|
|
126
|
+
## seems like the way to go ! To be implemented one day.
|
|
127
|
+
self.class.superclass.instance_method(:draw_axis).
|
|
128
|
+
bind(self).call(t)
|
|
129
|
+
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def set_bounds_for_axis(t, range = nil)
|
|
136
|
+
# Useless here
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
# Draw the axis background lines:
|
|
140
|
+
def draw_background_lines(t)
|
|
141
|
+
# Nothing to do
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
def extension(t, style = nil)
|
|
145
|
+
base = super(t, style)
|
|
146
|
+
|
|
147
|
+
base += @bar_size.to_text_height(t, @location.orientation)
|
|
148
|
+
base += @bar_shift.to_text_height(t, @location.orientation)
|
|
149
|
+
return base
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
# Whether the axis is vertical or not
|
|
153
|
+
def vertical?
|
|
154
|
+
return @location.vertical?
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
ZAxisStyle = FullAxisStyle.dup
|
|
160
|
+
ZAxisStyle['bar_size'] = CmdArg.new('dimension')
|
|
161
|
+
ZAxisStyle['bar_shift'] = CmdArg.new('dimension')
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
end
|
|
@@ -19,7 +19,7 @@ require 'ctioga2/graphics/coordinates'
|
|
|
19
19
|
# This module contains all the classes used by ctioga
|
|
20
20
|
module CTioga2
|
|
21
21
|
|
|
22
|
-
Version::register_svn_info('$Revision:
|
|
22
|
+
Version::register_svn_info('$Revision: 202 $', '$Date: 2010-11-30 22:21:17 +0100 (Tue, 30 Nov 2010) $')
|
|
23
23
|
|
|
24
24
|
module Graphics
|
|
25
25
|
|
|
@@ -27,7 +27,7 @@ module CTioga2
|
|
|
27
27
|
|
|
28
28
|
# The style of a Elements::Subplot object.
|
|
29
29
|
#
|
|
30
|
-
#
|
|
30
|
+
# \todo it should hold
|
|
31
31
|
# * labels
|
|
32
32
|
# * axes and edges (in a *clean* way !)
|
|
33
33
|
# * ticks
|
|
@@ -37,6 +37,8 @@ module CTioga2
|
|
|
37
37
|
|
|
38
38
|
include Tioga::FigureConstants
|
|
39
39
|
|
|
40
|
+
include Log
|
|
41
|
+
|
|
40
42
|
# The various sides of the plot. A hash location -> AxisStyle.
|
|
41
43
|
attr_accessor :axes
|
|
42
44
|
|
|
@@ -87,7 +89,7 @@ module CTioga2
|
|
|
87
89
|
@yaxis_location = :left
|
|
88
90
|
|
|
89
91
|
@title = TextLabel.new
|
|
90
|
-
@title.loc = :top
|
|
92
|
+
@title.loc = Types::PlotLocation.new(:top)
|
|
91
93
|
|
|
92
94
|
@plot_margin = nil
|
|
93
95
|
|
|
@@ -103,6 +105,9 @@ module CTioga2
|
|
|
103
105
|
#
|
|
104
106
|
# Now the question is: how should that affect user-defined
|
|
105
107
|
# axes ? It should not.
|
|
108
|
+
#
|
|
109
|
+
# \todo This really should move to Axis when transformations
|
|
110
|
+
# are handled correctly.
|
|
106
111
|
def set_log_scale(which, val)
|
|
107
112
|
case which
|
|
108
113
|
when :x
|
|
@@ -118,26 +123,55 @@ module CTioga2
|
|
|
118
123
|
end
|
|
119
124
|
end
|
|
120
125
|
|
|
126
|
+
# Sets the axis which should be used for subsequent objects
|
|
127
|
+
# (for which no axis is specified) for the given plot
|
|
128
|
+
def set_default_axis(which, name)
|
|
129
|
+
axis = get_axis_key(name)
|
|
130
|
+
self.send("#{which}axis_location=", axis)
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
|
|
121
134
|
# Returns the AxisStyle corresponding to the named
|
|
122
135
|
# axis. _name_ can be:
|
|
123
|
-
#
|
|
124
|
-
#
|
|
125
|
-
# around, and
|
|
136
|
+
#
|
|
137
|
+
# * one of the named axes (ie, by default: top, left, right,
|
|
138
|
+
# bottom). All names are stripped from spaces around, and
|
|
139
|
+
# downcased (see #clean_axis_name). Can be also user-defined
|
|
140
|
+
# axes.
|
|
141
|
+
#
|
|
126
142
|
# * x(axis)?/y(axis)?, which returns the default object for the
|
|
127
143
|
# given location
|
|
144
|
+
#
|
|
145
|
+
# \todo Maybe x2 and y2 could be provided to signify "the side
|
|
146
|
+
# which isn't the default" ?
|
|
128
147
|
def get_axis_style(name)
|
|
148
|
+
style = @axes[get_axis_key(name)]
|
|
149
|
+
if ! style
|
|
150
|
+
## @todo Type-safe exception here
|
|
151
|
+
raise "Unkown named axis: '#{name}'"
|
|
152
|
+
else
|
|
153
|
+
return style
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
# Returns the key corresponding to the named axis. See
|
|
158
|
+
# #get_axis_style for more information; though ultimately the
|
|
159
|
+
# latter is using this function.
|
|
160
|
+
def get_axis_key(name)
|
|
129
161
|
if name =~ /^\s*([xy])(?:axis)?\s*$/i
|
|
130
|
-
return
|
|
162
|
+
return self.send("#{$1.downcase}axis_location")
|
|
131
163
|
else
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
164
|
+
return clean_axis_name(name)
|
|
165
|
+
end
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
def set_axis_style(name, style)
|
|
169
|
+
key = get_axis_key(name)
|
|
170
|
+
@axes[key] = style
|
|
139
171
|
end
|
|
140
172
|
|
|
173
|
+
|
|
174
|
+
|
|
141
175
|
# Returns a BaseTextStyle or similar for the given
|
|
142
176
|
# location. The location is of the form:
|
|
143
177
|
# axis_name(_(ticks?|label))
|
|
@@ -166,16 +200,27 @@ module CTioga2
|
|
|
166
200
|
style = get_label_style(which)
|
|
167
201
|
hash = hash.merge({'text' => text}) unless text.nil?
|
|
168
202
|
if hash.key?('text') and ! style.is_a?(TextLabel)
|
|
169
|
-
CTioga2::Log::warn
|
|
203
|
+
CTioga2::Log::warn {"Text property of label #{which} was set, but this has no meaning: tick labels can't be set this way. Did you mean to use \"#{which}_label\"" + " instead ?" }
|
|
170
204
|
end
|
|
171
205
|
style.set_from_hash(hash)
|
|
172
206
|
end
|
|
173
207
|
|
|
174
208
|
|
|
175
|
-
# Draws all axes for the plot.
|
|
176
|
-
|
|
209
|
+
# Draws all axes for the plot. The _bounds_ argument is that
|
|
210
|
+
# computed by Subplot#compute_boundaries; it is there to
|
|
211
|
+
# ensure that the axes know whether they have their own
|
|
212
|
+
# coordinate system or if they just follow what's around.
|
|
213
|
+
def draw_all_axes(t, bounds)
|
|
177
214
|
for which, axis in @axes
|
|
178
|
-
|
|
215
|
+
t.context do
|
|
216
|
+
begin
|
|
217
|
+
axis.set_bounds_for_axis(t, bounds[which])
|
|
218
|
+
axis.draw_axis(t)
|
|
219
|
+
rescue Exception => e
|
|
220
|
+
error { "Impossible to draw axis #{which}: #{e.message}" }
|
|
221
|
+
debug { "Full message: #{e.inspect}" }
|
|
222
|
+
end
|
|
223
|
+
end
|
|
179
224
|
end
|
|
180
225
|
# We draw the title last
|
|
181
226
|
title.draw(t, 'title')
|
|
@@ -218,18 +263,16 @@ module CTioga2
|
|
|
218
263
|
# Returns a Types::MarginsBox
|
|
219
264
|
def estimate_margins(t)
|
|
220
265
|
margins = [:left, :right, :top, :bottom].map do |side|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
266
|
+
exts = axes_for_side(side).map do |ax|
|
|
267
|
+
ax.extension(t,self)
|
|
268
|
+
end
|
|
269
|
+
if @title.loc.is_side?(side)
|
|
270
|
+
exts << @title.label_extension(t, 'title', @title.loc) *
|
|
224
271
|
(@text_scale || 1)
|
|
225
|
-
if ext < ext2
|
|
226
|
-
ext = ext2
|
|
227
|
-
end
|
|
228
272
|
end
|
|
229
|
-
Types::Dimension.new(:dy,
|
|
273
|
+
Types::Dimension.new(:dy, exts.max)
|
|
230
274
|
end
|
|
231
275
|
|
|
232
|
-
# TODO: add the plot title !
|
|
233
276
|
box = Types::MarginsBox.new(*margins)
|
|
234
277
|
if @padding
|
|
235
278
|
for dim in box.margins
|
|
@@ -251,6 +294,16 @@ module CTioga2
|
|
|
251
294
|
return $1.downcase.to_sym
|
|
252
295
|
end
|
|
253
296
|
|
|
297
|
+
# Returns the list of AxisStyle corresponding to the given
|
|
298
|
+
# side (:top, :eft, etc...)
|
|
299
|
+
def axes_for_side(side)
|
|
300
|
+
ret = []
|
|
301
|
+
for k,v in @axes
|
|
302
|
+
ret << v if v.location.is_side?(side)
|
|
303
|
+
end
|
|
304
|
+
return ret
|
|
305
|
+
end
|
|
306
|
+
|
|
254
307
|
end
|
|
255
308
|
|
|
256
309
|
AxisGroup = CmdGroup.new('axes-labels',
|
|
@@ -293,7 +346,7 @@ given axis, through its various options:
|
|
|
293
346
|
* decoration
|
|
294
347
|
EOH
|
|
295
348
|
|
|
296
|
-
|
|
349
|
+
BackgroundLinesCommand =
|
|
297
350
|
Cmd.new('background-lines', nil, '--background-lines',
|
|
298
351
|
[
|
|
299
352
|
CmdArg.new('axis'),
|
|
@@ -316,72 +369,122 @@ EOH
|
|
|
316
369
|
end
|
|
317
370
|
end
|
|
318
371
|
|
|
319
|
-
|
|
372
|
+
BackgroundLinesCommand.
|
|
320
373
|
describe("Sets the color of the background lines",
|
|
321
374
|
<<"EOH", AxisGroup)
|
|
322
375
|
Sets the color of the background lines for the given axis.
|
|
323
376
|
EOH
|
|
324
377
|
|
|
325
378
|
|
|
326
|
-
|
|
327
|
-
Cmd.new(
|
|
379
|
+
%w{x y}.each do |axis|
|
|
380
|
+
labelcmd = Cmd.new("#{axis}label", "-#{axis}",
|
|
381
|
+
"--#{axis}label", [ CmdArg.new('text') ],
|
|
382
|
+
FullTextStyleOptions) do |plotmaker, label, options|
|
|
383
|
+
PlotStyle.current_plot_style(plotmaker).
|
|
384
|
+
set_label_style("#{axis}_label", options, label)
|
|
385
|
+
end
|
|
386
|
+
labelcmd.describe("Sets the #{axis.upcase} label of the plot",
|
|
387
|
+
<<"EOH", AxisGroup)
|
|
388
|
+
Sets the #{axis.upcase} label of the current plot.
|
|
389
|
+
EOH
|
|
390
|
+
|
|
391
|
+
nolabelcmd = Cmd.new("no-#{axis}label", nil,
|
|
392
|
+
"--no-#{axis}label", []) do |plotmaker|
|
|
393
|
+
PlotStyle.current_plot_style(plotmaker).
|
|
394
|
+
set_label_style("#{axis}_label", {}, false)
|
|
395
|
+
end
|
|
396
|
+
nolabelcmd.describe("Disables #{axis.upcase} label for the plot",
|
|
397
|
+
<<"EOH", AxisGroup)
|
|
398
|
+
Removes the #{axis.upcase} label for the current plot.
|
|
399
|
+
EOH
|
|
400
|
+
|
|
401
|
+
daxiscmd = Cmd.new("#{axis}axis", nil,
|
|
402
|
+
"--#{axis}axis", [ CmdArg.new('axis') ],
|
|
403
|
+
{}) do |plotmaker, ax|
|
|
404
|
+
PlotStyle.current_plot_style(plotmaker).
|
|
405
|
+
set_default_axis(axis, ax)
|
|
406
|
+
end
|
|
407
|
+
daxiscmd.describe("Sets default #{axis.upcase} axis for the plot",
|
|
408
|
+
<<"EOD", AxisGroup)
|
|
409
|
+
Sets the default axis for the #{axis.upcase} axis for all subsequent
|
|
410
|
+
commands take rely on default axes (such as {command: plot},
|
|
411
|
+
{command: xrange}, {command: yrange}...).
|
|
412
|
+
EOD
|
|
413
|
+
|
|
414
|
+
|
|
415
|
+
end
|
|
416
|
+
|
|
417
|
+
TitleLabelCommand =
|
|
418
|
+
Cmd.new('title', '-t', '--title', [ CmdArg.new('text') ],
|
|
328
419
|
FullTextStyleOptions) do |plotmaker, label, options|
|
|
329
420
|
PlotStyle.current_plot_style(plotmaker).
|
|
330
|
-
set_label_style('
|
|
421
|
+
set_label_style('title', options, label)
|
|
331
422
|
end
|
|
332
423
|
|
|
333
|
-
|
|
424
|
+
TitleLabelCommand.describe("Sets the title of the plot",
|
|
334
425
|
<<"EOH", AxisGroup)
|
|
335
|
-
Sets the
|
|
426
|
+
Sets the title of the current plot.
|
|
336
427
|
EOH
|
|
337
428
|
|
|
338
|
-
|
|
339
|
-
Cmd.new('no-
|
|
429
|
+
NoTitleLabelCommand =
|
|
430
|
+
Cmd.new('no-title', nil, '--no-title', []) do |plotmaker|
|
|
340
431
|
PlotStyle.current_plot_style(plotmaker).
|
|
341
|
-
set_label_style('
|
|
432
|
+
set_label_style('title', {}, false)
|
|
342
433
|
end
|
|
343
434
|
|
|
344
|
-
|
|
435
|
+
NoTitleLabelCommand.describe("Disables title for the plot",
|
|
345
436
|
<<"EOH", AxisGroup)
|
|
346
|
-
|
|
437
|
+
Removes the title of the current plot.
|
|
347
438
|
EOH
|
|
348
439
|
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
PlotStyle.current_plot_style(plotmaker).
|
|
354
|
-
set_label_style('y_label', options, label)
|
|
440
|
+
X2Command =
|
|
441
|
+
Cmd.new('x2', nil, '--x2', []) do |plotmaker|
|
|
442
|
+
plotmaker.interpreter.
|
|
443
|
+
run_commands("xaxis(top)\naxis-style(top,decoration=full)")
|
|
355
444
|
end
|
|
356
445
|
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
446
|
+
X2Command.describe("Switches to top axis for subsequent curves",
|
|
447
|
+
<<"EOH", AxisGroup)
|
|
448
|
+
Switches to using the top axis for X axis for the subsequent curves,
|
|
449
|
+
and turns on full decoration for the right axis. Shortcut for:
|
|
450
|
+
|
|
451
|
+
# xaxis(top)
|
|
452
|
+
# axis-style(top,decoration=full)
|
|
360
453
|
EOH
|
|
361
454
|
|
|
362
|
-
|
|
363
|
-
Cmd.new('
|
|
364
|
-
|
|
365
|
-
|
|
455
|
+
Y2Command =
|
|
456
|
+
Cmd.new('y2', nil, '--y2', []) do |plotmaker|
|
|
457
|
+
plotmaker.interpreter.
|
|
458
|
+
run_commands("yaxis(right)\naxis-style(right,decoration=full)")
|
|
366
459
|
end
|
|
367
460
|
|
|
368
|
-
|
|
461
|
+
Y2Command.describe("Switches to right axis for subsequent curves",
|
|
369
462
|
<<"EOH", AxisGroup)
|
|
370
|
-
|
|
463
|
+
Switches to using the right axis for Y axis for the subsequent curves,
|
|
464
|
+
and turns on full decoration for the right axis. Shortcut for:
|
|
465
|
+
|
|
466
|
+
# yaxis(right)
|
|
467
|
+
# axis-style(right,decoration=full)
|
|
371
468
|
EOH
|
|
372
469
|
|
|
373
|
-
|
|
374
|
-
Cmd.new('
|
|
375
|
-
|
|
470
|
+
NewZAxisCommand =
|
|
471
|
+
Cmd.new('new-zaxis', nil, '--new-zaxis',
|
|
472
|
+
[
|
|
473
|
+
CmdArg.new('text')
|
|
474
|
+
],ZAxisStyle) do |plotmaker, name, options|
|
|
475
|
+
axis = Styles::MapAxisStyle.new
|
|
376
476
|
PlotStyle.current_plot_style(plotmaker).
|
|
377
|
-
|
|
477
|
+
set_axis_style(name, axis)
|
|
478
|
+
axis.set_from_hash(options)
|
|
378
479
|
end
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
480
|
+
|
|
481
|
+
NewZAxisCommand.
|
|
482
|
+
describe("Creates a Z axis",
|
|
483
|
+
<<"EOH", AxisGroup)
|
|
484
|
+
Creates a named Z axis that can display information from Z color maps
|
|
383
485
|
EOH
|
|
384
486
|
|
|
487
|
+
|
|
385
488
|
LabelStyleCommand =
|
|
386
489
|
Cmd.new('label-style', nil, '--label-style',
|
|
387
490
|
[ CmdArg.new('label') ], # Here: change the label too...
|
|
@@ -396,7 +499,7 @@ Sets the style of the given label (see the type {type: label} for more
|
|
|
396
499
|
information).
|
|
397
500
|
|
|
398
501
|
The option text permits to also set the text of the label (does not
|
|
399
|
-
work for ticks).
|
|
502
|
+
work for ticks).
|
|
400
503
|
|
|
401
504
|
For tick labels, setting the color option also sets the color for the
|
|
402
505
|
lines of the corresponding axis. If you don't want that, you can
|