1# Copyright (c) 2010-2024 openpyxl
2
3from openpyxl.descriptors.serialisable import Serialisable
4from openpyxl.descriptors import (
5 Typed,
6 Sequence,
7 Alias
8)
9from openpyxl.descriptors.excel import ExtensionList
10from openpyxl.descriptors.nested import (
11 NestedNoneSet,
12 NestedBool,
13)
14
15from ._chart import ChartBase
16from .axis import NumericAxis, TextAxis
17from .series import XYSeries
18from .label import DataLabelList
19
20
21class ScatterChart(ChartBase):
22
23 tagname = "scatterChart"
24
25 scatterStyle = NestedNoneSet(values=(['line', 'lineMarker', 'marker', 'smooth', 'smoothMarker']))
26 varyColors = NestedBool(allow_none=True)
27 ser = Sequence(expected_type=XYSeries, allow_none=True)
28 dLbls = Typed(expected_type=DataLabelList, allow_none=True)
29 dataLabels = Alias("dLbls")
30 extLst = Typed(expected_type=ExtensionList, allow_none=True)
31
32 x_axis = Typed(expected_type=(NumericAxis, TextAxis))
33 y_axis = Typed(expected_type=NumericAxis)
34
35 _series_type = "scatter"
36
37 __elements__ = ('scatterStyle', 'varyColors', 'ser', 'dLbls', 'axId',)
38
39 def __init__(self,
40 scatterStyle=None,
41 varyColors=None,
42 ser=(),
43 dLbls=None,
44 extLst=None,
45 **kw
46 ):
47 self.scatterStyle = scatterStyle
48 self.varyColors = varyColors
49 self.ser = ser
50 self.dLbls = dLbls
51 self.x_axis = NumericAxis(axId=10, crossAx=20)
52 self.y_axis = NumericAxis(axId=20, crossAx=10)
53 super().__init__(**kw)