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, Line3DChart, 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



58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/axlsx/drawing/chart.rb', line 58

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
  yield self if block_given?
end

Instance Attribute Details

#end_atMarker

The ending marker for this chart

Returns:



48
49
50
# File 'lib/axlsx/drawing/chart.rb', line 48

def end_at
  @end_at
end

#graphic_frameGraphicFrame (readonly)

A reference to the graphic frame that owns this chart

Returns:



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

def graphic_frame
  @graphic_frame
end

#indexInteger (readonly)

The index of this chart in the workbooks charts collection

Returns:

  • (Integer)


33
34
35
# File 'lib/axlsx/drawing/chart.rb', line 33

def index
  @index
end

#pnString (readonly)

The part name for this chart

Returns:

  • (String)


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

def pn
  @pn
end

#seriesSimpleTypedList (readonly)

A collection of series objects that are applied to the chart

Returns:



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

def series
  @series
end

#series_typeSeries (readonly)

The type of series to use for this chart

Returns:



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

def series_type
  @series_type
end

#show_legendBoolean

Show the legend in the chart

Returns:

  • (Boolean)


52
53
54
# File 'lib/axlsx/drawing/chart.rb', line 52

def show_legend
  @show_legend
end

#start_atMarker

The starting marker for this chart

Returns:



44
45
46
# File 'lib/axlsx/drawing/chart.rb', line 44

def start_at
  @start_at
end

#styleInteger

The style for the chart. see ECMA Part 1 §21.2.2.196

Returns:

  • (Integer)


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

def style
  @style
end

#titleTitle

The title object for the chart.

Returns:



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

def title
  @title
end

#view3DObject

The 3D view properties for the chart



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

def view3D
  @view3D
end

Instance Method Details

#add_series(options = {}) ⇒ Series

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

Returns:

See Also:



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

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

#to_xmlObject

Chart Serialization serializes the chart



101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# File 'lib/axlsx/drawing/chart.rb', line 101

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