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:

  • for examples

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



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

#graphic_frameGraphicFrame (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

#indexInteger (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
  @index
end

#pnString (readonly)

The part name for this chart

Returns:

  • (String)


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

def pn
  @pn
end

#seriesSimpleTypedList (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_typeSeries (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

#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

#styleInteger

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

#titleTitle

The title object for the chart.

Returns:



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

def title
  @title
end

#view3DObject

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

#add_series(options = {}) ⇒ Series

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

Returns:

See Also:



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

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

#end_at(x, y) ⇒ Marker

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:



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

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

#fromObject

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



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

def from
  @graphic_frame.anchor.from
end

#start_at(x, y) ⇒ Marker

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:



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

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

#toObject

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

#to_xmlObject

Chart Serialization serializes the chart



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

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