Class: Writeexcel::Chart::Scatter

Inherits:
Writeexcel::Chart show all
Defined in:
lib/writeexcel/charts/scatter.rb

Overview

==SYNOPSIS

To create a simple Excel file with a Scatter chart using WriteExcel:

#!/usr/bin/ruby -w

require 'writeexcel'

workbook  = WriteExcel.new('chart.xls')
worksheet = workbook.add_worksheet

chart     = workbook.add_chart(:type => 'Chart::Scatter')

# Configure the chart.
chart.add_series(
  :categories => '=Sheet1!$A$2:$A$7',
  :values     => '=Sheet1!$B$2:$B$7'
)

# Add the worksheet data the chart refers to.
data = [
    [ 'Category', 2, 3, 4, 5, 6, 7 ],
    [ 'Value',    1, 4, 5, 2, 1, 5 ]
]

worksheet.write('A1', data)

workbook.close

==DESCRIPTION

This module implements Scatter charts for WriteExcel. The chart object is created via the Workbook add_chart() method:

chart = workbook.add_chart(:type => 'Chart::Scatter')

Once the object is created it can be configured via the following methods that are common to all chart classes:

chart.add_series
chart.set_x_axis
chart.set_y_axis
chart.set_title

These methods are explained in detail in Chart section of WriteExcel. Class specific methods or settings, if any, are explained below.

==Scatter Chart Methods

There aren't currently any scatter chart specific methods. See the TODO section of Chart section in WriteExcel.

==EXAMPLE

Here is a complete example that demonstrates most of the available features when creating a chart.

#!/usr/bin/ruby -w

require 'writeexcel'

workbook  = WriteExcel.new('chart_scatter.xls')
worksheet = workbook.add_worksheet
bold      = workbook.add_format(:bold => 1)

# Add the worksheet data that the charts will refer to.
headings = [ 'Number', 'Sample 1', 'Sample 2' ]
data = [
    [ 2, 3, 4, 5, 6, 7 ],
    [ 1, 4, 5, 2, 1, 5 ],
    [ 3, 6, 7, 5, 4, 3 ]
]

worksheet.write('A1', headings, bold)
worksheet.write('A2', data)

# Create a new chart object. In this case an embedded chart.
chart = workbook.add_chart(:type => 'Chart::Scatter', :embedded => 1)

# Configure the first series. (Sample 1)
chart.add_series(
  :name       => 'Sample 1',
  :categories => '=Sheet1!$A$2:$A$7',
  :values     => '=Sheet1!$B$2:$B$7'
)

# Configure the second series. (Sample 2)
chart.add_series(
  :name       => 'Sample 2',
  :categories => '=Sheet1!$A$2:$A$7',
  :values     => '=Sheet1!$C$2:$C$7'
)

# Add a chart title and some axis labels.
chart.set_title (:name => 'Results of sample analysis')
chart.set_x_axis(:name => 'Test number')
chart.set_y_axis(:name => 'Sample length (cm)')

# Insert the chart into the worksheet (with an offset).
worksheet.insert_chart('D2', chart, 25, 10)

workbook.close

Constant Summary

Constants inherited from Worksheet

Worksheet::Buffer, Worksheet::ColMax, Worksheet::RowMax, Worksheet::StrMax

Constants inherited from BIFFWriter

BIFFWriter::BIFF_Version, BIFFWriter::BigEndian

Instance Attribute Summary

Attributes inherited from Worksheet

#filter_area, #object_ids, #print_range, #title_range

Attributes inherited from BIFFWriter

#data, #datasize

Instance Method Summary collapse

Methods inherited from Writeexcel::Chart

#add_series, #close, #data=, #embedded, #embedded=, factory, #set_chartarea, #set_embedded_config_data, #set_legend, #set_plotarea, #set_title, #set_x_axis, #set_y_axis, #using_tmpfile=

Methods inherited from Worksheet

#activate, #autofilter, #autofilter_name_record_short, #boundsheet, #center_horizontally, #center_vertically, #charts_size, #cleanup, #close, #comments_size, #comments_visible?, #data_validation, #filter_column, #filter_count, #fit_to_pages, #freeze_panes, #hidden=, #hidden?, #hide, #hide_gridlines, #hide_zero, #image_mso_size, #image_mso_size=, #images_array, #images_size, #index, #insert_chart, #insert_image, #is_name_utf16be?, #keep_leading_zeros, #merge_range, #merge_range_with_date_time, #name, #name_record_short, #num_images, #num_images=, #num_shapes, #offset, #offset=, #outline_settings, #position_object, #print_across, #print_area, #print_area_name_record_short, #print_row_col_headers, #print_title_name_record_long, #print_title_name_record_short, #protect, #push_cluster, #push_object_ids, #repeat_columns, #repeat_formula, #repeat_rows, #right_to_left, #select, #selected=, #selected?, #set_column, #set_first_row_column, #set_first_sheet, #set_footer, #set_h_pagebreaks, #set_header, #set_landscape, #set_margin_bottom, #set_margin_left, #set_margin_right, #set_margin_top, #set_margins, #set_margins_LR, #set_margins_TB, #set_page_view, #set_paper, #set_portrait, #set_print_scale, #set_row, #set_selection, #set_start_page, #set_tab_color, #set_v_pagebreaks, #set_zoom, #show_comments, #split_panes, #store_formula, #store_mso_client_anchor, #store_mso_client_data, #store_mso_opt_image, #store_mso_sp, #store_mso_sp_container, #store_parent_mso_record, #type, #write, #write_blank, #write_col, #write_comment, #write_date_time, #write_formula, #write_number, #write_row, #write_string, #write_url, #write_url_range, #write_utf16be_string, #write_utf16le_string

Methods included from ConvertDateTime

#convert_date_time

Methods inherited from BIFFWriter

#add_continue, #add_mso_generic, #append, #cleanup, #clear_data_for_test, #get_data, #inspect, #not_using_tmpfile, #prepend, #print_caller_info, #set_byte_order, #store_bof, #store_eof, #unpack_record

Methods included from CallerInfo

#caller_info

Methods inherited from WriteFile

#append, #prepend

Constructor Details

#initialize(*args) ⇒ Scatter

new()



131
132
133
# File 'lib/writeexcel/charts/scatter.rb', line 131

def initialize(*args)   # :nodoc:
  super
end

Instance Method Details

#store_axis_category_streamObject

_store_axis_category_stream(). Overridden.

Write the AXIS chart substream for the chart category.

For a Scatter chart the category stream is replace with a values stream. We override this method and turn it into a values stream.



162
163
164
165
166
167
168
169
# File 'lib/writeexcel/charts/scatter.rb', line 162

def store_axis_category_stream   # :nodoc:
  store_axis(0)

  store_begin
  store_valuerange
  store_tick
  store_end
end

#store_chart_typeObject

_store_chart_type()

Implementation of the abstract method from the specific chart class.

Write the AREA chart BIFF record. Defines a area chart type.



143
144
145
146
147
148
149
150
151
# File 'lib/writeexcel/charts/scatter.rb', line 143

def store_chart_type   # :nodoc:
  record       = 0x101B     # Record identifier.
  length       = 0x0006     # Number of bytes to follow.
  bubble_ratio = 0x0064     # Bubble ratio.
  bubble_type  = 0x0001     # Bubble type.
  grbit        = 0x0000     # Option flags.

  store_simple(record, length, bubble_ratio, bubble_type, grbit)
end

#store_marker_dataformat_streamObject

_store_marker_dataformat_stream(). Overridden.

This is an implementation of the parent abstract method to define properties of markers, linetypes, pie formats and other.



178
179
180
181
182
183
184
185
186
187
188
# File 'lib/writeexcel/charts/scatter.rb', line 178

def store_marker_dataformat_stream   # :nodoc:
  store_dataformat(0x0000, 0xFFFD, 0x0000)

  store_begin
  store_3dbarshape
  store_lineformat(0x00000000, 0x0005, 0xFFFF, 0x0008, 0x004D)
  store_areaformat(0x00FFFFFF, 0x0000, 0x01, 0x01, 0x4E, 0x4D)
  store_pieformat
  store_markerformat(0x00, 0x00, 0x02, 0x01, 0x4D, 0x4D, 0x3C)
  store_end
end