Source code for fastpyxl.chart.bubble_chart
# Autogenerated schema
from __future__ import annotations
from fastpyxl.typed_serialisable.errors import FieldValidationError
from fastpyxl.typed_serialisable.fields import AliasField, Field
from fastpyxl.descriptors.excel import ExtensionList
from ._chart import ChartBase
from .axis import NumericAxis
from .series import XYSeries
from .label import DataLabelList
def _bubble_scale(v):
if v is None:
return None
try:
n = int(v)
except (TypeError, ValueError) as exc:
raise FieldValidationError(f"bubbleScale rejected value {v!r}") from exc
if n < 0 or n > 300:
raise FieldValidationError(f"bubbleScale rejected value {v!r}")
return n
def _size_represents(v):
if v is None or v == "none":
return None
if v not in ("area", "w"):
raise FieldValidationError(f"sizeRepresents rejected value {v!r}")
return v
[docs]
class BubbleChart(ChartBase):
tagname = "bubbleChart"
varyColors: bool | None = Field.nested_bool(allow_none=True, default=None)
ser: list[XYSeries] | None = Field.sequence(expected_type=XYSeries, allow_none=True, default=list)
dLbls: DataLabelList | None = Field.element(
expected_type=DataLabelList, allow_none=True, default=None
)
dataLabels = AliasField("dLbls", default=None)
bubble3D: bool | None = Field.nested_bool(allow_none=True, default=None)
bubbleScale: int | None = Field.nested_value(
expected_type=int,
allow_none=True,
converter=_bubble_scale, default=None,
)
showNegBubbles: bool | None = Field.nested_bool(allow_none=True, default=None)
sizeRepresents: str | None = Field.nested_value(
expected_type=str,
allow_none=True,
converter=_size_represents, default=None,
)
extLst: ExtensionList | None = Field.element(
expected_type=ExtensionList, allow_none=True, serialize=False, default=None
)
_series_type = "bubble"
xml_order = (
"varyColors",
"ser",
"dLbls",
"bubble3D",
"bubbleScale",
"showNegBubbles",
"sizeRepresents",
"axId",
)
def __init__(
self,
varyColors=None,
ser=(),
dLbls=None,
bubble3D=None,
bubbleScale=None,
showNegBubbles=None,
sizeRepresents=None,
extLst=None,
**kw,
):
self.varyColors = varyColors
self.ser = list(ser) if ser is not None else []
self.dLbls = dLbls
self.bubble3D = bubble3D
self.bubbleScale = bubbleScale
self.showNegBubbles = showNegBubbles
self.sizeRepresents = sizeRepresents
self.extLst = extLst
self.x_axis = NumericAxis(axId=10, crossAx=20)
self.y_axis = NumericAxis(axId=20, crossAx=10)
super().__init__(**kw)