Class: Gruff::Scatter
Overview
Constant Summary
Constants inherited from Base
Base::DEFAULT_MARGIN, Base::DEFAULT_TARGET_WIDTH, Base::LABEL_MARGIN, Base::LEGEND_MARGIN
Instance Attribute Summary collapse
-
#circle_radius ⇒ Object
writeonly
Attributes to allow customising the size of the points.
-
#disable_significant_rounding_x_axis ⇒ Object
writeonly
Allow disabling the significant rounding when labeling the X axis.
-
#enable_vertical_line_markers ⇒ Object
writeonly
Allow enabling vertical lines.
-
#marker_x_count ⇒ Object
writeonly
The number of vertical lines shown for reference.
-
#maximum_x_value ⇒ Object
writeonly
Maximum X Value.
-
#minimum_x_value ⇒ Object
writeonly
Minimum X Value.
-
#stroke_width ⇒ Object
writeonly
Sets the attribute stroke_width.
-
#use_vertical_x_labels ⇒ Object
writeonly
Sets the attribute use_vertical_x_labels.
-
#x_axis_label_format ⇒ Object
writeonly
Sets the attribute x_axis_label_format.
-
#x_label_margin ⇒ Object
writeonly
Allow using vertical labels in the X axis (and setting the label margin).
-
#y_axis_label_format ⇒ Object
writeonly
Allow passing lambdas to format labels.
Attributes inherited from Base
#bold_title, #bottom_margin, #center_labels_over_point, #colors, #font_color, #has_left_labels, #hide_legend, #hide_line_markers, #hide_line_numbers, #hide_title, #label_max_size, #label_stagger_height, #label_truncation_style, #labels, #left_margin, #legend_at_bottom, #legend_box_size, #legend_font_size, #legend_margin, #marker_color, #marker_font_size, #marker_shadow_color, #maximum_value, #minimum_value, #no_data_message, #right_margin, #sort, #sorted_drawing, #title, #title_font, #title_font_size, #title_margin, #top_margin, #use_data_label, #x_axis_increment, #x_axis_label, #y_axis_increment, #y_axis_label
Instance Method Summary collapse
-
#data(name, x_data_points = [], y_data_points = [], color = nil) ⇒ Object
(also: #dataxy)
The first parameter is the name of the dataset.
- #draw ⇒ Object
Methods inherited from Base
#add_color, #font=, #initialize, #margins=, #replace_colors, #theme=, #theme_37signals, #theme_greyscale, #theme_keynote, #theme_odeo, #theme_pastel, #theme_rails_keynote, #to_blob, #to_image, #write
Constructor Details
This class inherits a constructor from Gruff::Base
Instance Attribute Details
#circle_radius=(value) ⇒ Object (writeonly)
Attributes to allow customising the size of the points.
24 25 26 |
# File 'lib/gruff/scatter.rb', line 24 def circle_radius=(value) @circle_radius = value end |
#disable_significant_rounding_x_axis=(value) ⇒ Object (writeonly)
Allow disabling the significant rounding when labeling the X axis. This is useful when working with a small range of high values (for example, a date range of months, while seconds as units).
29 30 31 |
# File 'lib/gruff/scatter.rb', line 29 def disable_significant_rounding_x_axis=(value) @disable_significant_rounding_x_axis = value end |
#enable_vertical_line_markers=(value) ⇒ Object (writeonly)
Allow enabling vertical lines. When you have a lot of data, they can work great.
32 33 34 |
# File 'lib/gruff/scatter.rb', line 32 def enable_vertical_line_markers=(value) @enable_vertical_line_markers = value end |
#marker_x_count=(value) ⇒ Object (writeonly)
The number of vertical lines shown for reference.
21 22 23 |
# File 'lib/gruff/scatter.rb', line 21 def marker_x_count=(value) @marker_x_count = value end |
#maximum_x_value=(value) ⇒ Object (writeonly)
Maximum X Value. The value will get overwritten by the max in the datasets.
14 15 16 |
# File 'lib/gruff/scatter.rb', line 14 def maximum_x_value=(value) @maximum_x_value = value end |
#minimum_x_value=(value) ⇒ Object (writeonly)
Minimum X Value. The value will get overwritten by the min in the datasets.
18 19 20 |
# File 'lib/gruff/scatter.rb', line 18 def minimum_x_value=(value) @minimum_x_value = value end |
#stroke_width=(value) ⇒ Object (writeonly)
Sets the attribute stroke_width
25 26 27 |
# File 'lib/gruff/scatter.rb', line 25 def stroke_width=(value) @stroke_width = value end |
#use_vertical_x_labels=(value) ⇒ Object (writeonly)
Sets the attribute use_vertical_x_labels
36 37 38 |
# File 'lib/gruff/scatter.rb', line 36 def use_vertical_x_labels=(value) @use_vertical_x_labels = value end |
#x_axis_label_format=(value) ⇒ Object (writeonly)
Sets the attribute x_axis_label_format
40 41 42 |
# File 'lib/gruff/scatter.rb', line 40 def x_axis_label_format=(value) @x_axis_label_format = value end |
#x_label_margin=(value) ⇒ Object (writeonly)
Allow using vertical labels in the X axis (and setting the label margin).
35 36 37 |
# File 'lib/gruff/scatter.rb', line 35 def x_label_margin=(value) @x_label_margin = value end |
#y_axis_label_format=(value) ⇒ Object (writeonly)
Allow passing lambdas to format labels.
39 40 41 |
# File 'lib/gruff/scatter.rb', line 39 def y_axis_label_format=(value) @y_axis_label_format = value end |
Instance Method Details
#data(name, x_data_points = [], y_data_points = [], color = nil) ⇒ Object Also known as: dataxy
If you want to use a preset theme, you must set it before calling #data.
The first parameter is the name of the dataset. The next two are the x and y axis data points contain in their own array in that respective order. The final parameter is the color.
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.
122 123 124 125 126 127 128 129 130 131 132 133 134 |
# File 'lib/gruff/scatter.rb', line 122 def data(name, x_data_points = [], y_data_points = [], color = nil) # make sure it's an array x_data_points = Array(x_data_points) y_data_points = Array(y_data_points) raise ArgumentError, 'Data Points contain nil Value!' if x_data_points.include?(nil) || y_data_points.include?(nil) raise ArgumentError, 'x_data_points is empty!' if x_data_points.empty? raise ArgumentError, 'y_data_points is empty!' if y_data_points.empty? 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 axis data store.add(name, y_data_points, color, x_data_points) end |
#draw ⇒ Object
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/gruff/scatter.rb', line 65 def draw super return unless data_given? # Check to see if more than one datapoint was given. NaN can result otherwise. @x_increment = (@x_spread > 1) ? (@graph_width / (@x_spread - 1).to_f) : @graph_width store.norm_data.each do |data_row| data_row.coordinates.each do |x_value, y_value| next if y_value.nil? || x_value.nil? new_x = get_x_coord(x_value, @graph_width, @graph_left) new_y = @graph_top + (@graph_height - y_value * @graph_height) # Reset each time to avoid thin-line errors stroke_width = @stroke_width || clip_value_if_greater_than(@columns / (store.norm_data.first[1].size * 4), 5.0) circle_radius = @circle_radius || clip_value_if_greater_than(@columns / (store.norm_data.first[1].size * 2.5), 5.0) Gruff::Renderer::Circle.new(color: data_row.color, width: stroke_width).render(new_x, new_y, new_x - circle_radius, new_y) end end end |