Class: Gruff::Line
Overview
Here’s how to make a Gruff::Line.
g = Gruff::Line.new
g.title = "A Line Graph"
g.data 'Fries', [20, 23, 19, 8]
g.data 'Hamburgers', [50, 19, 99, 29]
g.write("line.png")
There are also other options described below, such as #baseline_value, #baseline_color, #hide_dots=, and #hide_lines=.
Constant Summary
Constants inherited from Base
Base::DEFAULT_MARGIN, Base::DEFAULT_TARGET_WIDTH, Base::LABEL_MARGIN, Base::LEGEND_MARGIN
Instance Attribute Summary collapse
-
#dot_radius ⇒ Object
writeonly
Sets the attribute dot_radius.
-
#dot_style ⇒ Object
writeonly
default is ‘circle’, other options include
square
anddiamond
. -
#hide_dots ⇒ Object
writeonly
Hide parts of the graph to fit more data points, or for a different appearance.
-
#hide_lines ⇒ Object
writeonly
Hide parts of the graph to fit more data points, or for a different appearance.
-
#line_width ⇒ Object
writeonly
Dimensions of lines and dots; calculated based on dataset size if left unspecified.
-
#marker_x_count ⇒ Object
writeonly
The number of vertical lines shown.
-
#maximum_x_value ⇒ Object
writeonly
accessors for support of xy data.
-
#minimum_x_value ⇒ Object
writeonly
accessors for support of xy data.
-
#reference_line_default_color ⇒ Object
writeonly
Sets the attribute reference_line_default_color.
-
#reference_line_default_width ⇒ Object
writeonly
Sets the attribute reference_line_default_width.
-
#reference_lines ⇒ Object
Allow for reference lines ( which are like baseline … just allowing for more & on both axes ).
-
#show_vertical_markers ⇒ Object
writeonly
Allow for vertical marker lines.
Attributes inherited from Base
#bottom_margin, #colors, #hide_legend, #hide_line_markers, #hide_line_numbers, #hide_title, #label_margin, #label_max_size, #label_truncation_style, #left_margin, #legend_at_bottom, #legend_box_size, #legend_margin, #marker_color, #marker_shadow_color, #maximum_value, #minimum_value, #no_data_message, #right_margin, #sort, #sorted_drawing, #title_margin, #top_margin, #x_axis_increment, #x_axis_label_format, #y_axis_increment, #y_axis_label_format
Instance Method Summary collapse
- #baseline_color ⇒ Object
- #baseline_color=(new_value) ⇒ Object
-
#baseline_value ⇒ Object
Get the value if somebody has defined it.
-
#baseline_value=(new_value) ⇒ Object
Set a value for a baseline reference line..
-
#data(name, data_points = [], color = nil) ⇒ Object
Input the data in the graph.
-
#dataxy(name, x_data_points = [], y_data_points = [], color = nil) ⇒ Object
This method allows one to plot a dataset with both X and Y data.
-
#initialize(*args) ⇒ Line
constructor
Call with target pixel width of graph (
800
,400
,300
), and/orfalse
to omit lines (points only).
Methods inherited from Base
#add_color, #bold_title=, #draw, #font=, #font_color=, #label_rotation=, #label_stagger_height=, #labels=, #legend_font_size=, #margins=, #marker_font_size=, #replace_colors, #theme=, #theme_37signals, #theme_greyscale, #theme_keynote, #theme_odeo, #theme_pastel, #theme_rails_keynote, #title=, #title_font=, #title_font_size=, #to_blob, #to_image, #transparent_background=, #write
Constructor Details
#initialize(*args) ⇒ Line
Call with target pixel width of graph (800
, 400
, 300
), and/or false
to omit lines (points only).
g = Gruff::Line.new(400) # 400px wide with lines
g = Gruff::Line.new(400, false) # 400px wide, no lines (for backwards compatibility)
g = Gruff::Line.new(false) # Defaults to 800px wide, no lines (for backwards compatibility)
The preferred way is to call #hide_dots= or #hide_lines= instead.
50 51 52 53 54 55 56 57 58 |
# File 'lib/gruff/line.rb', line 50 def initialize(*args) raise ArgumentError, 'Wrong number of arguments' if args.length > 2 if args.empty? || (!args.first.is_a?(Numeric) && !args.first.is_a?(String)) super() else super(args.shift) end end |
Instance Attribute Details
#dot_radius=(value) ⇒ Object (writeonly)
Sets the attribute dot_radius
26 27 28 |
# File 'lib/gruff/line.rb', line 26 def dot_radius=(value) @dot_radius = value end |
#dot_style=(value) ⇒ Object (writeonly)
default is ‘circle’, other options include square
and diamond
.
29 30 31 |
# File 'lib/gruff/line.rb', line 29 def dot_style=(value) @dot_style = value end |
#hide_dots=(value) ⇒ Object (writeonly)
Hide parts of the graph to fit more data points, or for a different appearance.
32 33 34 |
# File 'lib/gruff/line.rb', line 32 def hide_dots=(value) @hide_dots = value end |
#hide_lines=(value) ⇒ Object (writeonly)
Hide parts of the graph to fit more data points, or for a different appearance.
32 33 34 |
# File 'lib/gruff/line.rb', line 32 def hide_lines=(value) @hide_lines = value end |
#line_width=(value) ⇒ Object (writeonly)
Dimensions of lines and dots; calculated based on dataset size if left unspecified.
25 26 27 |
# File 'lib/gruff/line.rb', line 25 def line_width=(value) @line_width = value end |
#marker_x_count=(value) ⇒ Object (writeonly)
The number of vertical lines shown.
41 42 43 |
# File 'lib/gruff/line.rb', line 41 def marker_x_count=(value) @marker_x_count = value end |
#maximum_x_value=(value) ⇒ Object (writeonly)
accessors for support of xy data.
38 39 40 |
# File 'lib/gruff/line.rb', line 38 def maximum_x_value=(value) @maximum_x_value = value end |
#minimum_x_value=(value) ⇒ Object (writeonly)
accessors for support of xy data.
35 36 37 |
# File 'lib/gruff/line.rb', line 35 def minimum_x_value=(value) @minimum_x_value = value end |
#reference_line_default_color=(value) ⇒ Object (writeonly)
Sets the attribute reference_line_default_color
18 19 20 |
# File 'lib/gruff/line.rb', line 18 def reference_line_default_color=(value) @reference_line_default_color = value end |
#reference_line_default_width=(value) ⇒ Object (writeonly)
Sets the attribute reference_line_default_width
19 20 21 |
# File 'lib/gruff/line.rb', line 19 def reference_line_default_width=(value) @reference_line_default_width = value end |
#reference_lines ⇒ Object
Allow for reference lines ( which are like baseline … just allowing for more & on both axes ).
17 18 19 |
# File 'lib/gruff/line.rb', line 17 def reference_lines @reference_lines end |
#show_vertical_markers=(value) ⇒ Object (writeonly)
Allow for vertical marker lines.
22 23 24 |
# File 'lib/gruff/line.rb', line 22 def show_vertical_markers=(value) @show_vertical_markers = value end |
Instance Method Details
#baseline_color ⇒ Object
73 74 75 76 77 |
# File 'lib/gruff/line.rb', line 73 def baseline_color if @reference_lines.key?(:baseline) @reference_lines[:baseline][:color] end end |
#baseline_color=(new_value) ⇒ Object
79 80 81 82 |
# File 'lib/gruff/line.rb', line 79 def baseline_color=(new_value) @reference_lines[:baseline] ||= {} @reference_lines[:baseline][:color] = new_value end |
#baseline_value ⇒ Object
Get the value if somebody has defined it.
61 62 63 64 65 |
# File 'lib/gruff/line.rb', line 61 def baseline_value if @reference_lines.key?(:baseline) @reference_lines[:baseline][:value] end end |
#baseline_value=(new_value) ⇒ Object
Set a value for a baseline reference line..
68 69 70 71 |
# File 'lib/gruff/line.rb', line 68 def baseline_value=(new_value) @reference_lines[:baseline] ||= {} @reference_lines[:baseline][:value] = new_value end |
#data(name, data_points = [], color = nil) ⇒ Object
If you want to use a preset theme, you must set it before calling #data.
Input the data in the graph.
Parameters are an array where the first element is the name of the dataset and the value is an array of values to plot.
Can be called multiple times with different datasets for a multi-valued graph.
If the color argument is nil, the next color from the default theme will be used.
104 105 106 |
# File 'lib/gruff/line.rb', line 104 def data(name, data_points = [], color = nil) store.add(name, nil, data_points, color) end |
#dataxy(name, x_data_points = [], y_data_points = [], color = nil) ⇒ Object #dataxy(name, xy_data_points = [], color = nil) ⇒ Object
-
if (x_data_points.length != y_data_points.length) an error is returned.
-
if the color argument is nil, the next color from the default theme will be used.
-
if you want to use a preset theme, you must set it before calling #dataxy.
This method allows one to plot a dataset with both X and Y data.
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 |
# File 'lib/gruff/line.rb', line 142 def dataxy(name, x_data_points = [], y_data_points = [], color = nil) # make sure it's an array x_data_points = Array(x_data_points) raise ArgumentError, 'x_data_points is nil!' if x_data_points.empty? if x_data_points.all? { |p| p.is_a?(Array) && p.size == 2 } color = y_data_points if y_data_points.is_a?(String) x_data_points, y_data_points = x_data_points.transpose else y_data_points = Array(y_data_points) end raise ArgumentError, 'x_data_points.length != y_data_points.length!' if x_data_points.length != y_data_points.length # call the existing data routine for the x/y data. store.add(name, x_data_points, y_data_points, color) end |