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')

Direct Known Subclasses

Bubble

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_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

Methods inherited from Base

#add_color, #bold_title=, #draw, #font=, #font_color=, #initialize, #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

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

#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.



28
29
30
# File 'lib/gruff/scatter.rb', line 28

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

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 x-axis data points.

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

    An Array 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.



90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/gruff/scatter.rb', line 90

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, x_data_points, y_data_points, color)
end

#disable_significant_rounding_x_axis=(_value) ⇒ Object

Deprecated.

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).



52
53
54
# File 'lib/gruff/scatter.rb', line 52

def disable_significant_rounding_x_axis=(_value)
  warn '#disable_significant_rounding_x_axis= is deprecated. It is no longer effective.'
end

#enable_vertical_line_markers=(value) ⇒ Object

Deprecated.

Please use #show_vertical_markers= instead.

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



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

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

#use_vertical_x_labels=(_value) ⇒ Object

Deprecated.

Please use Base#label_rotation= instead.

Allow using vertical labels in the X axis.



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

def use_vertical_x_labels=(_value)
  warn '#use_vertical_x_labels= is deprecated. It is no longer effective. Please use `#label_rotation=` instead'
end

#x_label_margin=(_value) ⇒ Object

Deprecated.

Allow using vertical labels in the X axis (and setting the label margin).



45
46
47
# File 'lib/gruff/scatter.rb', line 45

def x_label_margin=(_value)
  warn '#x_label_margin= is deprecated. It is no longer effective.'
end