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

Direct Known Subclasses

Bar3DChart, Pie3DChart

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

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

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
# File 'lib/axlsx/drawing/chart.rb', line 52

def initialize(frame, options={})
  @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
  yield self if block_given?
end

Instance Attribute Details

#end_atMarker

The ending marker for this chart

Returns:



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

def end_at
  @end_at
end

#graphic_frameGraphicFrame (readonly)

A reference to the graphic frame that owns this chart

Returns:



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

def graphic_frame
  @graphic_frame
end

#indexInteger (readonly)

The index of this chart in the workbooks charts collection

Returns:

  • (Integer)


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

def index
  @index
end

#pnString (readonly)

The part name for this chart

Returns:

  • (String)


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

def pn
  @pn
end

#seriesSimpleTypedList (readonly)

A collection of series objects that are applied to the chart

Returns:



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

def series
  @series
end

#series_typeSeries (readonly)

The type of series to use for this chart

Returns:



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

def series_type
  @series_type
end

#show_legendBoolean

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

#start_atMarker

The starting marker for this chart

Returns:



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

def start_at
  @start_at
end

#titleTitle

The title object for the chart.

Returns:



8
9
10
# File 'lib/axlsx/drawing/chart.rb', line 8

def title
  @title
end

#view3DObject

The 3D view properties for the chart



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

def view3D
  @view3D
end

Instance Method Details

#add_series(options = {}) ⇒ Series

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

Returns:

See Also:



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

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

#to_xmlObject

Chart Serialization serializes the chart



92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# File 'lib/axlsx/drawing/chart.rb', line 92

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