Class: Axlsx::Axis

Inherits:
Object
  • Object
show all
Includes:
OptionsParser
Defined in:
lib/axlsx/drawing/axis.rb

Overview

the access class defines common properties and values for a chart axis.

Direct Known Subclasses

CatAxis, SerAxis, ValAxis

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from OptionsParser

#parse_options

Constructor Details

#initialize(options = {}) ⇒ Axis

Creates an Axis object

Parameters:

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

    a customizable set of options

Options Hash (options):

  • cross_axis (Axis)

    the perpendicular axis

  • ax_pos (Symbol)
  • crosses (Symbol)
  • tick_lbl_pos (Symbol)

Raises:

  • (ArgumentError)

    If axi_id or cross_ax are not unsigned integers



15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/axlsx/drawing/axis.rb', line 15

def initialize(options={})
  @id = rand(8 ** 8)
  @format_code = "General"
  @delete = @label_rotation = 0
  @scaling = Scaling.new(:orientation=>:minMax)
  @title = @color = nil
  self.ax_pos = :b
  self.tick_lbl_pos = :nextTo
  self.format_code = "General"
  self.crosses = :autoZero
  self.gridlines = true
  parse_options options
end

Instance Attribute Details

#ax_posSymbol Also known as: axPos

The position of the axis must be one of [:l, :r, :t, :b]

Returns:

  • (Symbol)


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

def ax_pos
  @ax_pos
end

#colorString

the fill color to use in the axis shape properties. This should be a 6 character long hex string e.g. FF0000 for red

Returns:

  • (String)


32
33
34
# File 'lib/axlsx/drawing/axis.rb', line 32

def color
  @color
end

#cross_axisInteger Also known as: crossAx

The perpendicular axis

Returns:

  • (Integer)


41
42
43
# File 'lib/axlsx/drawing/axis.rb', line 41

def cross_axis
  @cross_axis
end

#crossesSymbol

specifies how the perpendicular axis is crossed must be one of [:autoZero, :min, :max]

Returns:

  • (Symbol)


69
70
71
# File 'lib/axlsx/drawing/axis.rb', line 69

def crosses
  @crosses
end

#deleteBoolean

specifies if gridlines should be shown in the chart

Returns:

  • (Boolean)


81
82
83
# File 'lib/axlsx/drawing/axis.rb', line 81

def delete
  @delete
end

#format_codeString

The number format format code for this axis default :General

Returns:

  • (String)


64
65
66
# File 'lib/axlsx/drawing/axis.rb', line 64

def format_code
  @format_code
end

#gridlinesBoolean

specifies if gridlines should be shown in the chart

Returns:

  • (Boolean)


77
78
79
# File 'lib/axlsx/drawing/axis.rb', line 77

def gridlines
  @gridlines
end

#idInteger (readonly) Also known as: axID

the id of the axis.

Returns:

  • (Integer)


36
37
38
# File 'lib/axlsx/drawing/axis.rb', line 36

def id
  @id
end

#label_rotationInteger

specifies how the degree of label rotation

Returns:

  • (Integer)


73
74
75
# File 'lib/axlsx/drawing/axis.rb', line 73

def label_rotation
  @label_rotation
end

#scalingScaling (readonly)

The scaling of the axis

Returns:

See Also:



47
48
49
# File 'lib/axlsx/drawing/axis.rb', line 47

def scaling
  @scaling
end

#tick_lbl_posSymbol Also known as: tickLblPos

the position of the tick labels must be one of [:nextTo, :high, :low]

Returns:

  • (Symbol)


58
59
60
# File 'lib/axlsx/drawing/axis.rb', line 58

def tick_lbl_pos
  @tick_lbl_pos
end

#titleObject

the title for the axis. This can be a cell or a fixed string.



84
85
86
# File 'lib/axlsx/drawing/axis.rb', line 84

def title
  @title
end

Instance Method Details

#to_xml_string(str = '') ⇒ String

Serializes the object

Parameters:

  • str (String) (defaults to: '')

Returns:

  • (String)


152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
# File 'lib/axlsx/drawing/axis.rb', line 152

def to_xml_string(str = '')
  str << ('<c:axId val="' << @id.to_s << '"/>')
  @scaling.to_xml_string str
  str << ('<c:delete val="' << @delete.to_s << '"/>')
  str << ('<c:axPos val="' << @ax_pos.to_s << '"/>')
  str << '<c:majorGridlines>'
  # TODO shape properties need to be extracted into a class
  if gridlines == false
    str << '<c:spPr>'
    str << '<a:ln>'
    str << '<a:noFill/>'
    str << '</a:ln>'
    str << '</c:spPr>'
  end
  str << '</c:majorGridlines>'
  @title.to_xml_string(str) unless @title == nil
  # Need to set sourceLinked to 0 if we're setting a format code on this row
  # otherwise it will never take, as it will always prefer the 'General' formatting
  # of the cells themselves
  str << ('<c:numFmt formatCode="' << @format_code << '" sourceLinked="' << (@format_code.eql?('General') ? '1' : '0') << '"/>')
  str << '<c:majorTickMark val="none"/>'
  str << '<c:minorTickMark val="none"/>'
  str << ('<c:tickLblPos val="' << @tick_lbl_pos.to_s << '"/>')
  # TODO - this is also being used for series colors
  # time to extract this into a class spPr - Shape Properties
  if @color
    str << '<c:spPr><a:ln><a:solidFill>'
    str << ('<a:srgbClr val="' << @color << '"/>')
    str << '</a:solidFill></a:ln></c:spPr>'
  end
  # some potential value in implementing this in full. Very detailed!
  str << ('<c:txPr><a:bodyPr rot="' << @label_rotation.to_s << '"/><a:lstStyle/><a:p><a:pPr><a:defRPr/></a:pPr><a:endParaRPr/></a:p></c:txPr>')
  str << ('<c:crossAx val="' << @cross_axis.id.to_s << '"/>')
  str << ('<c:crosses val="' << @crosses.to_s << '"/>')
end