lib/writeexcel/charts/bar.rb in writeexcel-0.3.5 vs lib/writeexcel/charts/bar.rb in writeexcel-0.4.0
- old
+ new
@@ -1,177 +1,178 @@
-###############################################################################
-#
-# Bar - A writer class for Excel Bar charts.
-#
-# Used in conjunction with Chart.
-#
-# See formatting note in Chart.
-#
-# Copyright 2000-2010, John McNamara, jmcnamara@cpan.org
-#
-# original written in Perl by John McNamara
-# converted to Ruby by Hideo Nakamura, cxn03651@msj.biglobe.ne.jp
-#
-
-require 'writeexcel/chart'
-
-class Chart
-
- #
- # ==SYNOPSIS
- #
- # To create a simple Excel file with a Bar chart using WriteExcel:
- #
- # #!/usr/bin/ruby -w
- #
- # require 'writeexcel'
- #
- # workbook = WriteExcel.new('chart.xls')
- # worksheet = workbook.add_worksheet
- #
- # chart = workbook.add_chart(:type => Chart::Bar)
- #
- # # 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 Bar charts for WriteExcel. The chart object is
- # created via the Workbook add_chart method:
- #
- # chart = workbook.add_chart(:type => Chart::Bar)
- #
- # 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.
- #
- # ==Bar Chart Methods
- #
- # There aren't currently any bar chart specific methods. See the TODO
- # section of Chart of 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_bar.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::Bar, :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
- #
- class Bar < Chart
- ###############################################################################
- #
- # new()
- #
- #
- def initialize(*args) # :nodoc:
- super
- @config[:x_axis_text] = [ 0x2D, 0x6D9, 0x5F, 0x1CC, 0x281, 0x0, 90 ]
- @config[:x_axis_text_pos] = [ 2, 2, 0, 0, 0x17, 0x2A ]
- @config[:y_axis_text] = [ 0x078A, 0x0DFC, 0x011D, 0x9C, 0x0081, 0x0000 ]
- @config[:y_axis_text_pos] = [ 2, 2, 0, 0, 0x45, 0x17 ]
- end
-
- ###############################################################################
- #
- # _store_chart_type()
- #
- # Implementation of the abstract method from the specific chart class.
- #
- # Write the BAR chart BIFF record. Defines a bar or column chart type.
- #
- def store_chart_type # :nodoc:
- record = 0x1017 # Record identifier.
- length = 0x0006 # Number of bytes to follow.
- pcOverlap = 0x0000 # Space between bars.
- pcGap = 0x0096 # Space between cats.
- grbit = 0x0001 # Option flags.
-
- header = [record, length].pack('vv')
- data = [pcOverlap].pack('v')
- data += [pcGap].pack('v')
- data += [grbit].pack('v')
-
- append(header, data)
- end
-
- ###############################################################################
- #
- # _set_embedded_config_data()
- #
- # Override some of the default configuration data for an embedded chart.
- #
- def set_embedded_config_data # :nodoc:
- # Set the parent configuration first.
- super
-
- # The axis positions are reversed for a bar chart so we change the config.
- @config[:x_axis_text] = [ 0x57, 0x5BC, 0xB5, 0x214, 0x281, 0x0, 90 ]
- @config[:x_axis_text_pos] = [ 2, 2, 0, 0, 0x17, 0x2A ]
- @config[:y_axis_text] = [ 0x074A, 0x0C8F, 0x021F, 0x123, 0x81, 0x0000 ]
- @config[:y_axis_text_pos] = [ 2, 2, 0, 0, 0x45, 0x17 ]
- end
- end
-end
+# -*- coding: utf-8 -*-
+###############################################################################
+#
+# Bar - A writer class for Excel Bar charts.
+#
+# Used in conjunction with Chart.
+#
+# See formatting note in Chart.
+#
+# Copyright 2000-2010, John McNamara, jmcnamara@cpan.org
+#
+# original written in Perl by John McNamara
+# converted to Ruby by Hideo Nakamura, cxn03651@msj.biglobe.ne.jp
+#
+
+require 'writeexcel/chart'
+
+class Chart
+
+ #
+ # ==SYNOPSIS
+ #
+ # To create a simple Excel file with a Bar chart using WriteExcel:
+ #
+ # #!/usr/bin/ruby -w
+ #
+ # require 'writeexcel'
+ #
+ # workbook = WriteExcel.new('chart.xls')
+ # worksheet = workbook.add_worksheet
+ #
+ # chart = workbook.add_chart(:type => Chart::Bar)
+ #
+ # # 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 Bar charts for WriteExcel. The chart object is
+ # created via the Workbook add_chart method:
+ #
+ # chart = workbook.add_chart(:type => Chart::Bar)
+ #
+ # 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.
+ #
+ # ==Bar Chart Methods
+ #
+ # There aren't currently any bar chart specific methods. See the TODO
+ # section of Chart of 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_bar.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::Bar, :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
+ #
+ class Bar < Chart
+ ###############################################################################
+ #
+ # new()
+ #
+ #
+ def initialize(*args) # :nodoc:
+ super
+ @config[:x_axis_text] = [ 0x2D, 0x6D9, 0x5F, 0x1CC, 0x281, 0x0, 90 ]
+ @config[:x_axis_text_pos] = [ 2, 2, 0, 0, 0x17, 0x2A ]
+ @config[:y_axis_text] = [ 0x078A, 0x0DFC, 0x011D, 0x9C, 0x0081, 0x0000 ]
+ @config[:y_axis_text_pos] = [ 2, 2, 0, 0, 0x45, 0x17 ]
+ end
+
+ ###############################################################################
+ #
+ # _store_chart_type()
+ #
+ # Implementation of the abstract method from the specific chart class.
+ #
+ # Write the BAR chart BIFF record. Defines a bar or column chart type.
+ #
+ def store_chart_type # :nodoc:
+ record = 0x1017 # Record identifier.
+ length = 0x0006 # Number of bytes to follow.
+ pcOverlap = 0x0000 # Space between bars.
+ pcGap = 0x0096 # Space between cats.
+ grbit = 0x0001 # Option flags.
+
+ header = [record, length].pack('vv')
+ data = [pcOverlap].pack('v')
+ data += [pcGap].pack('v')
+ data += [grbit].pack('v')
+
+ append(header, data)
+ end
+
+ ###############################################################################
+ #
+ # _set_embedded_config_data()
+ #
+ # Override some of the default configuration data for an embedded chart.
+ #
+ def set_embedded_config_data # :nodoc:
+ # Set the parent configuration first.
+ super
+
+ # The axis positions are reversed for a bar chart so we change the config.
+ @config[:x_axis_text] = [ 0x57, 0x5BC, 0xB5, 0x214, 0x281, 0x0, 90 ]
+ @config[:x_axis_text_pos] = [ 2, 2, 0, 0, 0x17, 0x2A ]
+ @config[:y_axis_text] = [ 0x074A, 0x0C8F, 0x021F, 0x123, 0x81, 0x0000 ]
+ @config[:y_axis_text_pos] = [ 2, 2, 0, 0, 0x45, 0x17 ]
+ end
+ end
+end