Class: Gruff::Scatter

Inherits:
Base
  • Object
show all
Defined in:
lib/gruff/scatter.rb

Overview

Here's how to set up a Gruff::Scatter.

g = Gruff::Scatter.new(800)
g.data :apples, [1,2,3,4], [4,3,2,1]
g.data 'oranges', [5,7,8], [4,1,7]
g.write('scatter.png')

Constant Summary

Constants inherited from Base

Base::DEFAULT_MARGIN, Base::DEFAULT_TARGET_WIDTH, Base::LABEL_MARGIN, Base::LEGEND_MARGIN

Instance Attribute Summary collapse

Attributes inherited from Base

#bottom_margin, #colors, #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_margin, #marker_color, #marker_shadow_color, #maximum_value, #minimum_value, #no_data_message, #right_margin, #sort, #sorted_drawing, #title, #title_margin, #top_margin, #x_axis_increment, #x_axis_label_format, #y_axis_increment, #y_axis_label_format

Instance Method Summary collapse

Methods inherited from Base

#add_color, #bold_title=, #draw, #font=, #font_color=, #initialize, #legend_font_size=, #margins=, #marker_font_size=, #replace_colors, #theme=, #theme_37signals, #theme_greyscale, #theme_keynote, #theme_odeo, #theme_pastel, #theme_rails_keynote, #title_font=, #title_font_size=, #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

#marker_x_count=(value) ⇒ Object

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

#show_vertical_markers=(value) ⇒ Object (writeonly)

Allow for vertical marker lines.


32
33
34
# File 'lib/gruff/scatter.rb', line 32

def show_vertical_markers=(value)
  @show_vertical_markers = value
end

#stroke_width=(value) ⇒ Object (writeonly)

Sets the attribute stroke_width

Parameters:

  • value

    the value to set the attribute stroke_width to.


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

Parameters:

  • value

    the value to set the attribute use_vertical_x_labels to.


36
37
38
# File 'lib/gruff/scatter.rb', line 36

def use_vertical_x_labels=(value)
  @use_vertical_x_labels = 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

Instance Method Details

#data(name, x_data_points = [], y_data_points = [], color = nil) ⇒ Object Also known as: dataxy

Note:

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.

Examples:

g = Gruff::Scatter.new
g.data(:apples, [1,2,3], [3,2,1])
g.data('oranges', [1,1,1], [2,3,4])
g.data('bitter_melon', [3,5,6], [6,7,8], '#000000')

Parameters:

  • name (String, Symbol)

    containing the name of the dataset.

  • x_data_points (Array) (defaults to: [])

    An Array of of x-axis data points.

  • y_data_points (Array) (defaults to: [])

    An Array of of y-axis data points.

  • color (String) (defaults to: nil)

    The hex string for the color of the dataset. Defaults to nil.

Raises:

  • (ArgumentError)

    Data points contain nil values. This error will get raised if either the x or y axis data points array contains a nil value. The graph will not make an assumption as how to graph nil.

  • (ArgumentError)

    x_data_points is empty. This error is raised when the array for the x-axis points are empty

  • (ArgumentError)

    y_data_points is empty. This error is raised when the array for the y-axis points are empty.

  • (ArgumentError)

    x_data_points.length != y_data_points.length. Error means that the x and y axis point arrays do not match in length.


80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/gruff/scatter.rb', line 80

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

#enable_vertical_line_markers=(value) ⇒ Object

Deprecated.

Please use show_vertical_markers attribute instead.

Allow enabling vertical lines. When you have a lot of data, they can work great.


40
41
42
43
# File 'lib/gruff/scatter.rb', line 40

def enable_vertical_line_markers=(value)
  warn '#enable_vertical_line_markers= is deprecated. Please use `show_vertical_markers` attribute instead'
  @show_vertical_markers = value
end