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_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..
-
#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=, #data, #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, #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 |
#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.
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |
# File 'lib/gruff/line.rb', line 118 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, y_data_points, color, x_data_points) end |