class NumericAxis(_BaseAxis): tagname = "valAx" axId = _BaseAxis.axId scaling = _BaseAxis.scaling delete = _BaseAxis.delete axPos = _BaseAxis.axPos majorGridlines = _BaseAxis.majorGridlines minorGridlines = _BaseAxis.minorGridlines title = _BaseAxis.title numFmt = _BaseAxis.numFmt majorTickMark = _BaseAxis.majorTickMark minorTickMark = _BaseAxis.minorTickMark tickLblPos = _BaseAxis.tickLblPos spPr = _BaseAxis.spPr txPr = _BaseAxis.txPr crossAx = _BaseAxis.crossAx crosses = _BaseAxis.crosses crossesAt = _BaseAxis.crossesAt crossBetween = NestedNoneSet(values=(['between', 'midCat'])) majorUnit = NestedFloat(allow_none=True) minorUnit = NestedFloat(allow_none=True) dispUnits = Typed(expected_type=DisplayUnitsLabelList, allow_none=True) extLst = Typed(expected_type=ExtensionList, allow_none=True) __elements__ = _BaseAxis.__elements__ + ( 'crossBetween', 'majorUnit', 'minorUnit', 'dispUnits', ) def __init__(self, crossBetween=None, majorUnit=None, minorUnit=None, dispUnits=None, extLst=None, **kw): self.crossBetween = crossBetween self.majorUnit = majorUnit self.minorUnit = minorUnit self.dispUnits = dispUnits kw.setdefault('majorGridlines', ChartLines()) kw.setdefault('axId', 100) kw.setdefault('crossAx', 10) super(NumericAxis, self).__init__(**kw) @classmethod def from_tree(cls, node): """ Special case value axes with no gridlines """ self = super(NumericAxis, cls).from_tree(node) gridlines = node.find("{%s}majorGridlines" % CHART_NS) if gridlines is None: self.majorGridlines = None return self
class Scaling(Serialisable): tagname = "scaling" logBase = NestedFloat(allow_none=True) orientation = NestedSet(values=(['maxMin', 'minMax'])) max = NestedFloat(allow_none=True) min = NestedFloat(allow_none=True) extLst = Typed(expected_type=ExtensionList, allow_none=True) __elements__ = ( 'logBase', 'orientation', 'max', 'min', ) def __init__( self, logBase=None, orientation="minMax", max=None, min=None, extLst=None, ): self.logBase = logBase self.orientation = orientation self.max = max self.min = min
class DateAxis(TextAxis): tagname = "dateAx" axId = _BaseAxis.axId scaling = _BaseAxis.scaling delete = _BaseAxis.delete axPos = _BaseAxis.axPos majorGridlines = _BaseAxis.majorGridlines minorGridlines = _BaseAxis.minorGridlines title = _BaseAxis.title numFmt = _BaseAxis.numFmt majorTickMark = _BaseAxis.majorTickMark minorTickMark = _BaseAxis.minorTickMark tickLblPos = _BaseAxis.tickLblPos spPr = _BaseAxis.spPr txPr = _BaseAxis.txPr crossAx = _BaseAxis.crossAx crosses = _BaseAxis.crosses crossesAt = _BaseAxis.crossesAt auto = NestedBool(allow_none=True) lblOffset = NestedInteger(allow_none=True) baseTimeUnit = NestedNoneSet(values=(['days', 'months', 'years'])) majorUnit = NestedFloat(allow_none=True) majorTimeUnit = NestedNoneSet(values=(['days', 'months', 'years'])) minorUnit = NestedFloat(allow_none=True) minorTimeUnit = NestedNoneSet(values=(['days', 'months', 'years'])) extLst = Typed(expected_type=ExtensionList, allow_none=True) __elements__ = _BaseAxis.__elements__ + ('auto', 'lblOffset', 'baseTimeUnit', 'majorUnit', 'majorTimeUnit', 'minorUnit', 'minorTimeUnit') def __init__(self, auto=None, lblOffset=None, baseTimeUnit=None, majorUnit=None, majorTimeUnit=None, minorUnit=None, minorTimeUnit=None, extLst=None, **kw ): self.auto = auto self.lblOffset = lblOffset self.baseTimeUnit = baseTimeUnit self.majorUnit = majorUnit self.majorTimeUnit = majorTimeUnit self.minorUnit = minorUnit self.minorTimeUnit = minorTimeUnit kw.setdefault('axId', 500) kw.setdefault('lblOffset', lblOffset) super(DateAxis, self).__init__(**kw)
class NumericAxis(_BaseAxis): tagname = "valAx" axId = _BaseAxis.axId scaling = _BaseAxis.scaling delete = _BaseAxis.delete axPos = _BaseAxis.axPos majorGridlines = _BaseAxis.majorGridlines minorGridlines = _BaseAxis.minorGridlines title = _BaseAxis.title numFmt = _BaseAxis.numFmt majorTickMark = _BaseAxis.majorTickMark minorTickMark = _BaseAxis.minorTickMark tickLblPos = _BaseAxis.tickLblPos spPr = _BaseAxis.spPr txPr = _BaseAxis.txPr crossAx = _BaseAxis.crossAx crosses = _BaseAxis.crosses crossesAt = _BaseAxis.crossesAt crossBetween = NestedNoneSet(values=(['between', 'midCat'])) majorUnit = NestedFloat(allow_none=True) minorUnit = NestedFloat(allow_none=True) dispUnits = Typed(expected_type=DisplayUnitsLabelList, allow_none=True) extLst = Typed(expected_type=ExtensionList, allow_none=True) __elements__ = _BaseAxis.__elements__ + ( 'crossBetween', 'majorUnit', 'minorUnit', 'dispUnits', ) def __init__(self, crossBetween=None, majorUnit=None, minorUnit=None, dispUnits=None, extLst=None, **kw): self.crossBetween = crossBetween self.majorUnit = majorUnit self.minorUnit = minorUnit self.dispUnits = dispUnits kw.setdefault('majorGridlines', ChartLines()) kw.setdefault('axId', 100) kw.setdefault('crossAx', 10) super(NumericAxis, self).__init__(**kw)
class Trendline(Serialisable): tagname = "trendline" name = String(allow_none=True) spPr = Typed(expected_type=GraphicalProperties, allow_none=True) graphicalProperties = Alias('spPr') trendlineType = NestedSet( values=(['exp', 'linear', 'log', 'movingAvg', 'poly', 'power'])) order = NestedInteger(allow_none=True) period = NestedInteger(allow_none=True) forward = NestedFloat(allow_none=True) backward = NestedFloat(allow_none=True) intercept = NestedFloat(allow_none=True) dispRSqr = NestedBool(allow_none=True) dispEq = NestedBool(allow_none=True) trendlineLbl = Typed(expected_type=TrendlineLabel, allow_none=True) extLst = Typed(expected_type=ExtensionList, allow_none=True) __elements__ = ('name', 'spPr', 'trendlineType', 'order', 'period', 'forward', 'backward', 'intercept', 'dispRSqr', 'dispEq', 'trendlineLbl') def __init__( self, name=None, spPr=None, trendlineType='linear', order=None, period=None, forward=None, backward=None, intercept=None, dispRSqr=None, dispEq=None, trendlineLbl=None, extLst=None, ): self.name = name self.spPr = spPr self.trendlineType = trendlineType self.order = order self.period = period self.forward = forward self.backward = backward self.intercept = intercept self.dispRSqr = dispRSqr self.dispEq = dispEq self.trendlineLbl = trendlineLbl
class PictureOptions(Serialisable): tagname = "pictureOptions" applyToFront = NestedBool(allow_none=True, nested=True) applyToSides = NestedBool(allow_none=True, nested=True) applyToEnd = NestedBool(allow_none=True, nested=True) pictureFormat = NestedNoneSet(values=(['stretch', 'stack', 'stackScale']), nested=True) pictureStackUnit = NestedFloat(allow_none=True, nested=True) __elements__ = ('applyToFront', 'applyToSides', 'applyToEnd', 'pictureFormat', 'pictureStackUnit') def __init__( self, applyToFront=None, applyToSides=None, applyToEnd=None, pictureFormat=None, pictureStackUnit=None, ): self.applyToFront = applyToFront self.applyToSides = applyToSides self.applyToEnd = applyToEnd self.pictureFormat = pictureFormat self.pictureStackUnit = pictureStackUnit
class DisplayUnitsLabelList(Serialisable): tagname = "dispUnits" custUnit = NestedFloat(allow_none=True) builtInUnit = NestedNoneSet(values=([ 'hundreds', 'thousands', 'tenThousands', 'hundredThousands', 'millions', 'tenMillions', 'hundredMillions', 'billions', 'trillions' ])) dispUnitsLbl = Typed(expected_type=DisplayUnitsLabel, allow_none=True) extLst = Typed(expected_type=ExtensionList, allow_none=True) __elements__ = ( 'custUnit', 'builtInUnit', 'dispUnitsLbl', ) def __init__( self, custUnit=None, builtInUnit=None, dispUnitsLbl=None, extLst=None, ): self.custUnit = custUnit self.builtInUnit = builtInUnit self.dispUnitsLbl = dispUnitsLbl
class ManualLayout(Serialisable): tagname = "manualLayout" layoutTarget = NestedNoneSet(values=(['inner', 'outer'])) xMode = NestedNoneSet(values=(['edge', 'factor'])) yMode = NestedNoneSet(values=(['edge', 'factor'])) wMode = NestedNoneSet(values=(['edge', 'factor'])) hMode = NestedNoneSet(values=(['edge', 'factor'])) x = NestedFloat(allow_none=True) y = NestedFloat(allow_none=True) w = NestedFloat(allow_none=True) width = Alias('w') h = NestedFloat(allow_none=True) height = Alias('h') extLst = Typed(expected_type=ExtensionList, allow_none=True) __elements__ = ('layoutTarget', 'xMode', 'yMode', 'wMode', 'hMode', 'x', 'y', 'w', 'h') def __init__( self, layoutTarget=None, xMode=None, yMode=None, wMode=None, hMode=None, x=None, y=None, w=None, h=None, extLst=None, ): self.layoutTarget = layoutTarget self.xMode = xMode self.yMode = yMode self.wMode = wMode self.hMode = hMode self.x = x self.y = y self.w = w self.h = h
class ProjectedPieChart(_PieChartBase): """ From the spec 21.2.2.126 This element contains the pie of pie or bar of pie series on this chart. Only the first series shall be displayed. The splitType element shall determine whether the splitPos and custSplit elements apply. """ tagname = "ofPieChart" varyColors = _PieChartBase.varyColors ser = _PieChartBase.ser dLbls = _PieChartBase.dLbls ofPieType = NestedSet(values=(['pie', 'bar'])) type = Alias('ofPieType') gapWidth = NestedGapAmount() splitType = NestedNoneSet( values=(['auto', 'cust', 'percent', 'pos', 'val'])) splitPos = NestedFloat(allow_none=True) custSplit = Typed(expected_type=CustomSplit, allow_none=True) secondPieSize = NestedMinMax(min=5, max=200, allow_none=True) serLines = Typed(expected_type=ChartLines, allow_none=True) join_lines = Alias('serLines') extLst = Typed(expected_type=ExtensionList, allow_none=True) __elements__ = _PieChartBase.__elements__ + ( 'ofPieType', 'gapWidth', 'splitType', 'splitPos', 'custSplit', 'secondPieSize', 'serLines') def __init__(self, ofPieType="pie", gapWidth=None, splitType="auto", splitPos=None, custSplit=None, secondPieSize=75, serLines=None, extLst=None, **kw): self.ofPieType = ofPieType self.gapWidth = gapWidth self.splitType = splitType self.splitPos = splitPos self.custSplit = custSplit self.secondPieSize = secondPieSize if serLines is None: self.serLines = ChartLines() super(ProjectedPieChart, self).__init__(**kw)
class ErrorBars(Serialisable): tagname = "errBars" errDir = NestedNoneSet(values=(['x', 'y'])) direction = Alias("errDir") errBarType = NestedSet(values=(['both', 'minus', 'plus'])) style = Alias("errBarType") errValType = NestedSet( values=(['cust', 'fixedVal', 'percentage', 'stdDev', 'stdErr'])) size = Alias("errValType") noEndCap = NestedBool(nested=True, allow_none=True) plus = Typed(expected_type=NumDataSource, allow_none=True) minus = Typed(expected_type=NumDataSource, allow_none=True) val = NestedFloat(allow_none=True) spPr = Typed(expected_type=ShapeProperties, allow_none=True) shapeProperties = Alias("spPr") extLst = Typed(expected_type=ExtensionList, allow_none=True) __elements__ = ('errDir', 'errBarType', 'errValType', 'noEndCap', 'minus', 'plus', 'val', 'spPr') def __init__( self, errDir=None, errBarType="both", errValType="fixedVal", noEndCap=None, plus=None, minus=None, val=None, spPr=None, extLst=None, ): self.errDir = errDir self.errBarType = errBarType self.errValType = errValType self.noEndCap = noEndCap self.plus = plus self.minus = minus self.val = val self.spPr = spPr
class Font(Serialisable): """Font options used in styles.""" UNDERLINE_DOUBLE = 'double' UNDERLINE_DOUBLE_ACCOUNTING = 'doubleAccounting' UNDERLINE_SINGLE = 'single' UNDERLINE_SINGLE_ACCOUNTING = 'singleAccounting' name = NestedString(allow_none=True) charset = NestedInteger(allow_none=True) family = NestedMinMax(min=0, max=14, allow_none=True) sz = NestedFloat(allow_none=True) size = Alias("sz") b = NestedBool(to_tree=_no_value) bold = Alias("b") i = NestedBool(to_tree=_no_value) italic = Alias("i") strike = NestedBool(allow_none=True) strikethrough = Alias("strike") outline = NestedBool(allow_none=True) shadow = NestedBool(allow_none=True) condense = NestedBool(allow_none=True) extend = NestedBool(allow_none=True) u = NestedNoneSet(values=('single', 'double', 'singleAccounting', 'doubleAccounting')) underline = Alias("u") vertAlign = NestedNoneSet(values=('superscript', 'subscript', 'baseline')) color = ColorDescriptor(allow_none=True) scheme = NestedNoneSet(values=("major", "minor")) tagname = "font" __elements__ = ('name', 'charset', 'family', 'b', 'i', 'strike', 'outline', 'shadow', 'condense', 'color', 'extend', 'sz', 'u', 'vertAlign', 'scheme') def __init__(self, name=None, sz=None, b=None, i=None, charset=None, u=None, strike=None, color=None, scheme=None, family=None, size=None, bold=None, italic=None, strikethrough=None, underline=None, vertAlign=None, outline=None, shadow=None, condense=None, extend=None): self.name = name self.family = family if size is not None: sz = size self.sz = sz if bold is not None: b = bold self.b = b if italic is not None: i = italic self.i = i if underline is not None: u = underline self.u = u if strikethrough is not None: strike = strikethrough self.strike = strike self.color = color self.vertAlign = vertAlign self.charset = charset self.outline = outline self.shadow = shadow self.condense = condense self.extend = extend self.scheme = scheme
class _BaseAxis(Serialisable): axId = NestedInteger(expected_type=int) scaling = Typed(expected_type=Scaling) delete = NestedBool(allow_none=True) axPos = NestedSet(values=(['b', 'l', 'r', 't'])) majorGridlines = Typed(expected_type=ChartLines, allow_none=True) minorGridlines = Typed(expected_type=ChartLines, allow_none=True) title = TitleDescriptor() numFmt = NumberFormatDescriptor() number_format = Alias("numFmt") majorTickMark = NestedNoneSet(values=(['cross', 'in', 'out'])) minorTickMark = NestedNoneSet(values=(['cross', 'in', 'out'])) tickLblPos = NestedNoneSet(values=(['high', 'low', 'nextTo'])) spPr = Typed(expected_type=GraphicalProperties, allow_none=True) graphicalProperties = Alias('spPr') txPr = Typed(expected_type=RichText, allow_none=True) textProperties = Alias('txPr') crossAx = NestedInteger(expected_type=int) # references other axis crosses = NestedNoneSet(values=(['autoZero', 'max', 'min'])) crossesAt = NestedFloat(allow_none=True) # crosses & crossesAt are mutually exclusive __elements__ = ('axId', 'scaling', 'delete', 'axPos', 'majorGridlines', 'minorGridlines', 'numFmt', 'majorTickMark', 'minorTickMark', 'tickLblPos', 'spPr', 'title', 'txPr', 'crossAx', 'crosses', 'crossesAt') def __init__( self, axId=None, scaling=None, delete=None, axPos='l', majorGridlines=None, minorGridlines=None, title=None, numFmt=None, majorTickMark=None, minorTickMark=None, tickLblPos=None, spPr=None, txPr=None, crossAx=None, crosses=None, crossesAt=None, ): self.axId = axId if scaling is None: scaling = Scaling() self.scaling = Scaling() self.delete = delete self.axPos = axPos self.majorGridlines = majorGridlines self.minorGridlines = minorGridlines self.title = title self.numFmt = numFmt self.majorTickMark = majorTickMark self.minorTickMark = minorTickMark self.tickLblPos = tickLblPos self.spPr = spPr self.txPr = txPr self.crossAx = crossAx self.crosses = crosses self.crossesAt = None