pie.py
2.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
from ... import options as opts
from ... import types
from ...charts.chart import Chart
from ...globals import ChartType
class Pie(Chart):
"""
<<< Pie >>>
The pie chart is mainly used to represent the proportion of data of
different categories in the total. Each radian represents the ratio of
the number of data points.
"""
def add(
self,
series_name: str,
data_pair: types.Sequence,
*,
color: types.Optional[str] = None,
radius: types.Optional[types.Sequence] = None,
center: types.Optional[types.Sequence] = None,
rosetype: types.Optional[str] = None,
is_clockwise: bool = True,
label_opts: types.Label = opts.LabelOpts(),
tooltip_opts: types.Tooltip = None,
itemstyle_opts: types.ItemStyle = None,
encode: types.Union[types.JSFunc, dict, None] = None,
):
if self.options.get("dataset") is not None:
data = None
self.options.get("legend")[0].update(
data=[d[0] for d in self.options.get("dataset").get("source")][1:]
)
else:
data = [{"name": n, "value": v} for n, v in data_pair]
for a, _ in data_pair:
self.options.get("legend")[0].get("data").append(a)
_dlst = self.options.get("legend")[0].get("data")
_dset = list(set(_dlst))
_dset.sort(key=_dlst.index)
self.options.get("legend")[0].update(data=list(_dset))
if not radius:
radius = ["0%", "75%"]
if not center:
center = ["50%", "50%"]
self._append_color(color)
self.options.get("series").append(
{
"type": ChartType.PIE,
"name": series_name,
"clockwise": is_clockwise,
"data": data,
"radius": radius,
"center": center,
"roseType": rosetype,
"label": label_opts,
"tooltip": tooltip_opts,
"itemStyle": itemstyle_opts,
"encode": encode,
}
)
return self