Class: Axlsx::Chart

Inherits:
Object
  • Object
show all
Defined in:
lib/axlsx/drawing/chart.rb

Overview

Note:

Worksheet#add_chart is the recommended way to create charts for your worksheets.

A Chart is the superclass for specific charts

See Also:

Direct Known Subclasses

Bar3DChart, Line3DChart, Pie3DChart

Instance Attribute Summary (collapse)

Instance Method Summary (collapse)

Constructor Details

- (Chart) initialize(frame, options = {}) {|_self| ... }

Creates a new chart object

Parameters:

  • frame (GraphicalFrame)

    The frame that holds this chart.

  • options (Hash) (defaults to: {})

    a customizable set of options

Options Hash (options):

  • title (Cell, String)
  • show_legend (Boolean)

Yields:

  • (_self)

Yield Parameters:

  • _self (Axlsx::Chart)

    the object that the method was called on



52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/axlsx/drawing/chart.rb', line 52

def initialize(frame, options={})
  @style = 2
  @graphic_frame=frame
  @graphic_frame.anchor.drawing.worksheet.workbook.charts << self
  @series = SimpleTypedList.new Series
  @show_legend = true
  @series_type = Series
  options.each do |o|
    self.send("#{o[0]}=", o[1]) if self.respond_to? "#{o[0]}="
  end
  start_at *options[:start_at] if options[:start_at]
  end_at *options[:end_at] if options[:start_at]
  yield self if block_given?
end

Instance Attribute Details

- (GraphicFrame) graphic_frame (readonly)

A reference to the graphic frame that owns this chart

Returns:



14
15
16
# File 'lib/axlsx/drawing/chart.rb', line 14

def graphic_frame
  @graphic_frame
end

- (Integer) index (readonly)

The index of this chart in the workbooks charts collection

Returns:

  • (Integer)


26
27
28
# File 'lib/axlsx/drawing/chart.rb', line 26

def index
  @graphic_frame.anchor.drawing.worksheet.workbook.charts.index(self)
end

- (String) pn (readonly)

The part name for this chart

Returns:

  • (String)


30
31
32
# File 'lib/axlsx/drawing/chart.rb', line 30

def pn
  "#{CHART_PN % (index+1)}"
end

- (SimpleTypedList) series (readonly)

A collection of series objects that are applied to the chart

Returns:



18
19
20
# File 'lib/axlsx/drawing/chart.rb', line 18

def series
  @series
end

- (Series) series_type (readonly)

The type of series to use for this chart.

Returns:



22
23
24
# File 'lib/axlsx/drawing/chart.rb', line 22

def series_type
  @series_type
end

- (Boolean) show_legend

Show the legend in the chart

Returns:

  • (Boolean)


46
47
48
# File 'lib/axlsx/drawing/chart.rb', line 46

def show_legend
  @show_legend
end

- (Integer) style

The style for the chart. see ECMA Part 1 ยง21.2.2.196

Returns:

  • (Integer)


42
43
44
# File 'lib/axlsx/drawing/chart.rb', line 42

def style
  @style
end

- (Title) title

The title object for the chart.

Returns:



37
38
39
# File 'lib/axlsx/drawing/chart.rb', line 37

def title
  @title
end

- (Object) view3D

The 3D view properties for the chart



10
11
12
# File 'lib/axlsx/drawing/chart.rb', line 10

def view3D
  @view3D
end

Instance Method Details

- (Series) add_series(options = {})

Adds a new series to the chart’s series collection.

Returns:

See Also:



101
102
103
104
# File 'lib/axlsx/drawing/chart.rb', line 101

def add_series(options={})
  @series_type.new(self, options)
  @series.last
end

- (Marker) end_at(x, y)

This is a short cut method to set the end anchor position If you need finer granularity in positioning use graphic_frame.anchor.to.colOff / rowOff

Parameters:

  • x (Integer)

    The column

  • y (Integer)

    The row

Returns:



149
150
151
152
# File 'lib/axlsx/drawing/chart.rb', line 149

def end_at(x, y)
  @graphic_frame.anchor.to.col = x
  @graphic_frame.anchor.to.row = y
end

- (Object) from

Note:

This will be disconinued in version 2.0.0. please use the start_at method

backwards compatibility to allow chart.to and chart.from access to anchor markers



94
95
96
# File 'lib/axlsx/drawing/chart.rb', line 94

def from
  @graphic_frame.anchor.from
end

- (Marker) start_at(x, y)

This is a short cut method to set the start anchor position If you need finer granularity in positioning use graphic_frame.anchor.from.colOff / rowOff

Parameters:

  • x (Integer)

    The column

  • y (Integer)

    The row

Returns:



138
139
140
141
# File 'lib/axlsx/drawing/chart.rb', line 138

def start_at(x, y)
  @graphic_frame.anchor.from.col = x
  @graphic_frame.anchor.from.row = y
end

- (Object) to

Note:

This will be disconinued in version 2.0.0. Please use the end_at method

backwards compatibility to allow chart.to and chart.from access to anchor markers



87
88
89
# File 'lib/axlsx/drawing/chart.rb', line 87

def to
  @graphic_frame.anchor.to
end

- (Object) to_xml

Chart Serialization serializes the chart



108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# File 'lib/axlsx/drawing/chart.rb', line 108

def to_xml
  builder = Nokogiri::XML::Builder.new(:encoding => ENCODING) do |xml|
    xml.send('c:chartSpace',:'xmlns:c' => XML_NS_C, :'xmlns:a' => XML_NS_A) {
      xml.send('c:date1904', :val=>Axlsx::Workbook.date1904)
      xml.send('c:style', :val=>style)
      xml.send('c:chart') {
        @title.to_xml(xml) unless @title.nil?
        @view3D.to_xml(xml) unless @view3D.nil?
        xml.send('c:plotArea') {
          xml.send('c:layout')
          yield xml if block_given?
        }
        if @show_legend
          xml.send('c:legend') {
            xml.send('c:legendPos', :val => "r")
            xml.send('c:layout')
          }
        end
      }
    }
  end
  builder.to_xml
end