From cdf8dfe407741560c3742e29ea74c326daeb10db Mon Sep 17 00:00:00 2001 From: chenjiandongx Date: Wed, 27 Mar 2019 10:03:37 +0800 Subject: [PATCH] =?UTF-8?q?Update:=20=E6=96=B0=E5=A2=9E=20legend=20?= =?UTF-8?q?=E9=80=89=E4=B8=AD=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- example/bar_example.py | 2 +- pyecharts/charts/base.py | 2 +- pyecharts/charts/basic_charts/bar.py | 3 ++- pyecharts/charts/basic_charts/boxplot.py | 3 ++- pyecharts/charts/basic_charts/calendar.py | 3 ++- pyecharts/charts/basic_charts/effectscatter.py | 3 ++- pyecharts/charts/basic_charts/funnel.py | 4 +++- pyecharts/charts/basic_charts/gauge.py | 4 +++- pyecharts/charts/basic_charts/geo.py | 3 ++- pyecharts/charts/basic_charts/graph.py | 3 ++- pyecharts/charts/basic_charts/heatmap.py | 2 ++ pyecharts/charts/basic_charts/kline.py | 3 ++- pyecharts/charts/basic_charts/line.py | 3 ++- pyecharts/charts/basic_charts/liquid.py | 1 + pyecharts/charts/basic_charts/map.py | 5 +++-- pyecharts/charts/basic_charts/parallel.py | 4 +++- pyecharts/charts/basic_charts/pie.py | 1 + pyecharts/charts/basic_charts/polar.py | 4 +++- pyecharts/charts/basic_charts/radar.py | 4 +++- pyecharts/charts/basic_charts/sankey.py | 4 +++- pyecharts/charts/basic_charts/scatter.py | 3 ++- pyecharts/charts/basic_charts/themeriver.py | 4 +++- pyecharts/charts/basic_charts/tree.py | 1 + pyecharts/charts/basic_charts/treemap.py | 4 +++- pyecharts/charts/basic_charts/wordcloud.py | 1 + pyecharts/charts/chart.py | 8 ++++++-- pyecharts/charts/composite_charts/page.py | 2 +- 27 files changed, 60 insertions(+), 24 deletions(-) diff --git a/example/bar_example.py b/example/bar_example.py index 0f0e93ec..f165d6c2 100644 --- a/example/bar_example.py +++ b/example/bar_example.py @@ -12,7 +12,7 @@ def bar_base() -> Bar: Bar() .add_xaxis(Faker.choose()) .add_yaxis("商家A", Faker.values()) - .add_yaxis("商家B", Faker.values()) + .add_yaxis("商家B", Faker.values(), is_selected=False) .set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="我是副标题")) ) return c diff --git a/pyecharts/charts/base.py b/pyecharts/charts/base.py index b1559d45..6eb4216b 100644 --- a/pyecharts/charts/base.py +++ b/pyecharts/charts/base.py @@ -7,8 +7,8 @@ from jinja2 import Environment from ..commons import utils from ..commons.types import Optional, Union -from ..globals import ThemeType, NotebookType, CurrentConfig from ..datasets import FILENAMES +from ..globals import CurrentConfig, NotebookType, ThemeType from ..options import InitOpts from ..render.engine import RenderEngine diff --git a/pyecharts/charts/basic_charts/bar.py b/pyecharts/charts/basic_charts/bar.py index 0428ee8e..d0073216 100644 --- a/pyecharts/charts/basic_charts/bar.py +++ b/pyecharts/charts/basic_charts/bar.py @@ -26,6 +26,7 @@ class Bar(AxisChart): series_name: str, yaxis_data: Sequence, *, + is_selected: bool = True, xaxis_index: Optional[Numeric] = None, yaxis_index: Optional[Numeric] = None, color: Optional[str] = None, @@ -46,7 +47,7 @@ class Bar(AxisChart): tooltip_opts = tooltip_opts.opts self._append_color(color) - self._append_legend(series_name) + self._append_legend(series_name, is_selected) self.options.get("series").append( { "type": ChartType.BAR, diff --git a/pyecharts/charts/basic_charts/boxplot.py b/pyecharts/charts/basic_charts/boxplot.py index 5dfb4847..d9e3c2ed 100644 --- a/pyecharts/charts/basic_charts/boxplot.py +++ b/pyecharts/charts/basic_charts/boxplot.py @@ -22,6 +22,7 @@ class Boxplot(AxisChart): series_name: str, y_axis: Sequence, *, + is_selected: bool = True, xaxis_index: Optional[Numeric] = None, yaxis_index: Optional[Numeric] = None, label_opts: Union[opts.LabelOpts, dict] = opts.LabelOpts(), @@ -38,7 +39,7 @@ class Boxplot(AxisChart): if isinstance(tooltip_opts, opts.TooltipOpts): tooltip_opts = tooltip_opts.opts - self._append_legend(series_name) + self._append_legend(series_name, is_selected) self.options.get("series").append( { "type": ChartType.BOXPLOT, diff --git a/pyecharts/charts/basic_charts/calendar.py b/pyecharts/charts/basic_charts/calendar.py index 25c2fb9c..a7faef59 100644 --- a/pyecharts/charts/basic_charts/calendar.py +++ b/pyecharts/charts/basic_charts/calendar.py @@ -21,6 +21,7 @@ class Calendar(Chart): series_name: str, yaxis_data: Sequence, *, + is_selected: bool = True, label_opts: Union[opts.LabelOpts, dict] = opts.LabelOpts(), calendar_opts: Union[opts.CalendarOpts, dict, None] = None, tooltip_opts: Union[opts.TooltipOpts, dict, None] = None, @@ -35,7 +36,7 @@ class Calendar(Chart): if calendar_opts: self.options.update(calendar=calendar_opts) - self._append_legend(series_name) + self._append_legend(series_name, is_selected) self.options.get("series").append( { "type": "heatmap", diff --git a/pyecharts/charts/basic_charts/effectscatter.py b/pyecharts/charts/basic_charts/effectscatter.py index 065c3f58..3c0a58cb 100644 --- a/pyecharts/charts/basic_charts/effectscatter.py +++ b/pyecharts/charts/basic_charts/effectscatter.py @@ -21,6 +21,7 @@ class EffectScatter(AxisChart): series_name: str, y_axis: Sequence, *, + is_selected: bool = True, xaxis_index: Optional[Numeric] = None, yaxis_index: Optional[Numeric] = None, color: Optional[str] = None, @@ -38,7 +39,7 @@ class EffectScatter(AxisChart): tooltip_opts = tooltip_opts.opts self._append_color(color) - self._append_legend(series_name) + self._append_legend(series_name, is_selected) self.options.get("series").append( { "type": ChartType.EFFECT_SCATTER, diff --git a/pyecharts/charts/basic_charts/funnel.py b/pyecharts/charts/basic_charts/funnel.py index b9d37a66..c34180f6 100644 --- a/pyecharts/charts/basic_charts/funnel.py +++ b/pyecharts/charts/basic_charts/funnel.py @@ -17,6 +17,8 @@ class Funnel(Chart): self, series_name: str, data_pair: Sequence, + *, + is_selected: bool = True, color: Optional[str] = None, sort_: str = "descending", gap: Numeric = 0, @@ -31,7 +33,7 @@ class Funnel(Chart): self._append_color(color) data = [{"name": n, "value": v} for n, v in data_pair] for a, _ in data_pair: - self._append_legend(a) + self._append_legend(a, is_selected) _dset = set(self.options.get("legend")[0].get("data")) self.options.get("legend")[0].update(data=list(_dset)) diff --git a/pyecharts/charts/basic_charts/gauge.py b/pyecharts/charts/basic_charts/gauge.py index a715958d..2da1fbed 100644 --- a/pyecharts/charts/basic_charts/gauge.py +++ b/pyecharts/charts/basic_charts/gauge.py @@ -17,6 +17,8 @@ class Gauge(Chart): self, series_name: str, data_pair: Sequence, + *, + is_selected: bool = True, min_: Numeric = 0, max_: Numeric = 100, start_angle: Numeric = 225, @@ -26,7 +28,7 @@ class Gauge(Chart): if isinstance(tooltip_opts, opts.TooltipOpts): tooltip_opts = tooltip_opts.opts - self._append_legend(series_name) + self._append_legend(series_name, is_selected) self.options.get("series").append( { "type": ChartType.GAUGE, diff --git a/pyecharts/charts/basic_charts/geo.py b/pyecharts/charts/basic_charts/geo.py index 6ddcae85..d5122601 100644 --- a/pyecharts/charts/basic_charts/geo.py +++ b/pyecharts/charts/basic_charts/geo.py @@ -62,6 +62,7 @@ class Geo(Chart): type_: str = "scatter", maptype: str = "china", *, + is_selected: bool = True, symbol: Optional[str] = None, symbol_size: Numeric = 12, color: Optional[str] = None, @@ -112,7 +113,7 @@ class Geo(Chart): } ) self._append_color(color) - self._append_legend(series_name) + self._append_legend(series_name, is_selected) if type_ == ChartType.SCATTER: self.options.get("series").append( diff --git a/pyecharts/charts/basic_charts/graph.py b/pyecharts/charts/basic_charts/graph.py index 11fb7cbc..3328c530 100644 --- a/pyecharts/charts/basic_charts/graph.py +++ b/pyecharts/charts/basic_charts/graph.py @@ -22,6 +22,7 @@ class Graph(Chart): links: List[Union[opts.GraphLink, dict]], categories: Union[List[Union[opts.GraphCategory, dict]], None] = None, *, + is_selected: bool = True, is_focusnode: bool = True, is_roam: bool = True, is_rotate_label: bool = False, @@ -59,7 +60,7 @@ class Graph(Chart): for c in categories: if isinstance(c, opts.GraphCategory): c = c.opts - self._append_legend(c) + self._append_legend(c, is_selected) if edge_symbol is None: edge_symbol = [None, None] diff --git a/pyecharts/charts/basic_charts/heatmap.py b/pyecharts/charts/basic_charts/heatmap.py index e48e5f08..5334e11e 100644 --- a/pyecharts/charts/basic_charts/heatmap.py +++ b/pyecharts/charts/basic_charts/heatmap.py @@ -24,6 +24,7 @@ class HeatMap(AxisChart): yaxis_data: Sequence, value: Sequence, *, + is_selected: bool = True, xaxis_index: Optional[Numeric] = None, yaxis_index: Optional[Numeric] = None, label_opts: Union[opts.LabelOpts, dict] = opts.LabelOpts(), @@ -40,6 +41,7 @@ class HeatMap(AxisChart): if isinstance(tooltip_opts, opts.TooltipOpts): tooltip_opts = tooltip_opts.opts + self._append_legend(series_name, is_selected) self.options.get("yAxis")[0].update(data=yaxis_data) self.options.get("series").append( { diff --git a/pyecharts/charts/basic_charts/kline.py b/pyecharts/charts/basic_charts/kline.py index 20047be1..fd4245c5 100644 --- a/pyecharts/charts/basic_charts/kline.py +++ b/pyecharts/charts/basic_charts/kline.py @@ -25,6 +25,7 @@ class Kline(AxisChart): series_name: str, y_axis: Sequence, *, + is_selected: bool = True, xaxis_index: Optional[Numeric] = None, yaxis_index: Optional[Numeric] = None, markline_opts: Union[opts.MarkLineOpts, dict, None] = None, @@ -39,7 +40,7 @@ class Kline(AxisChart): if isinstance(tooltip_opts, opts.TooltipOpts): tooltip_opts = tooltip_opts.opts - self._append_legend(series_name) + self._append_legend(series_name, is_selected) self.options.get("series").append( { "type": ChartType.KLINE, diff --git a/pyecharts/charts/basic_charts/line.py b/pyecharts/charts/basic_charts/line.py index 7e55db1f..d5fce3ec 100644 --- a/pyecharts/charts/basic_charts/line.py +++ b/pyecharts/charts/basic_charts/line.py @@ -21,6 +21,7 @@ class Line(AxisChart): series_name: str, y_axis: Sequence, *, + is_selected: bool = True, xaxis_index: Optional[Numeric] = None, yaxis_index: Optional[Numeric] = None, color: Optional[str] = None, @@ -51,7 +52,7 @@ class Line(AxisChart): tooltip_opts = tooltip_opts.opts self._append_color(color) - self._append_legend(series_name) + self._append_legend(series_name, is_selected) # 合并 x 和 y 轴数据,避免当 X 轴的类型设置为 'value' 的时候, # X、Y 轴均显示 Y 轴数据 data = [list(z) for z in zip(self._xaxis_data, y_axis)] diff --git a/pyecharts/charts/basic_charts/liquid.py b/pyecharts/charts/basic_charts/liquid.py index c2113b78..daf23182 100644 --- a/pyecharts/charts/basic_charts/liquid.py +++ b/pyecharts/charts/basic_charts/liquid.py @@ -20,6 +20,7 @@ class Liquid(Chart): self, series_name: str, data: Sequence, + *, shape: str = "circle", color: Optional[List[str]] = None, is_animation: bool = True, diff --git a/pyecharts/charts/basic_charts/map.py b/pyecharts/charts/basic_charts/map.py index 2af27bb5..92e9740c 100644 --- a/pyecharts/charts/basic_charts/map.py +++ b/pyecharts/charts/basic_charts/map.py @@ -21,6 +21,7 @@ class Map(Chart): data_pair: Sequence, maptype: str = "china", *, + is_selected: bool = True, is_roam: bool = True, symbol: Optional[str] = None, is_map_symbol_show: bool = True, @@ -33,8 +34,8 @@ class Map(Chart): tooltip_opts = tooltip_opts.opts self.js_dependencies.add(maptype) - data = [{"name": n, "value": v} for (n, v) in data_pair] - self._append_legend(series_name) + data = [{"name": n, "value": v} for n, v in data_pair] + self._append_legend(series_name, is_selected) self.options.get("series").append( { "type": ChartType.MAP, diff --git a/pyecharts/charts/basic_charts/parallel.py b/pyecharts/charts/basic_charts/parallel.py index f830c05d..3b44ca8e 100644 --- a/pyecharts/charts/basic_charts/parallel.py +++ b/pyecharts/charts/basic_charts/parallel.py @@ -28,6 +28,8 @@ class Parallel(Chart): self, series_name: str, data: Sequence, + *, + is_selected: bool = True, linestyle_opts: Union[opts.LineStyleOpts, dict] = opts.LineStyleOpts(), tooltip_opts: Union[opts.TooltipOpts, dict, None] = None, ): @@ -37,7 +39,7 @@ class Parallel(Chart): tooltip_opts = tooltip_opts.opts self.options.update(parallel=opts.ParallelOpts().opts) - self._append_legend(series_name) + self._append_legend(series_name, is_selected) self.options.get("series").append( { "type": ChartType.PARALLEL, diff --git a/pyecharts/charts/basic_charts/pie.py b/pyecharts/charts/basic_charts/pie.py index 2e9f658d..691f8f86 100644 --- a/pyecharts/charts/basic_charts/pie.py +++ b/pyecharts/charts/basic_charts/pie.py @@ -19,6 +19,7 @@ class Pie(Chart): self, series_name: str, data_pair: Sequence, + *, color: Optional[str] = None, radius: Optional[Sequence] = None, center: Optional[Sequence] = None, diff --git a/pyecharts/charts/basic_charts/polar.py b/pyecharts/charts/basic_charts/polar.py index cc9b1533..5dc3e372 100644 --- a/pyecharts/charts/basic_charts/polar.py +++ b/pyecharts/charts/basic_charts/polar.py @@ -31,6 +31,8 @@ class Polar(Chart): self, series_name: str, data: Sequence, + *, + is_selected: bool = True, type_: str = "line", symbol: Optional[str] = None, symbol_size: Numeric = 4, @@ -49,7 +51,7 @@ class Polar(Chart): if isinstance(tooltip_opts, opts.TooltipOpts): tooltip_opts = tooltip_opts.opts - self._append_legend(series_name) + self._append_legend(series_name, is_selected) self.options.update(polar={}) if type_ in ("scatter", "line", "bar"): diff --git a/pyecharts/charts/basic_charts/radar.py b/pyecharts/charts/basic_charts/radar.py index b5d6171d..7d2f0f33 100644 --- a/pyecharts/charts/basic_charts/radar.py +++ b/pyecharts/charts/basic_charts/radar.py @@ -57,6 +57,8 @@ class Radar(Chart): self, series_name: str, data: Sequence, + *, + is_selected: bool = True, symbol: Optional[str] = None, color: Optional[str] = None, label_opts: opts.LabelOpts = opts.LabelOpts(), @@ -73,7 +75,7 @@ class Radar(Chart): if isinstance(tooltip_opts, opts.TooltipOpts): tooltip_opts = tooltip_opts.opts - self._append_legend(series_name) + self._append_legend(series_name, is_selected) self.options.get("series").append( { "type": ChartType.RADAR, diff --git a/pyecharts/charts/basic_charts/sankey.py b/pyecharts/charts/basic_charts/sankey.py index 59ca8769..f8cbe879 100644 --- a/pyecharts/charts/basic_charts/sankey.py +++ b/pyecharts/charts/basic_charts/sankey.py @@ -21,6 +21,8 @@ class Sankey(Chart): series_name: str, nodes: Sequence, links: Sequence, + *, + is_selected: bool = True, node_width: Numeric = 20, node_gap: Numeric = 8, label_opts: Union[opts.LabelOpts, dict] = opts.LabelOpts(), @@ -34,7 +36,7 @@ class Sankey(Chart): if isinstance(tooltip_opts, opts.TooltipOpts): tooltip_opts = tooltip_opts.opts - self._append_legend(series_name) + self._append_legend(series_name, is_selected) self.options.get("series").append( { "type": ChartType.SANKEY, diff --git a/pyecharts/charts/basic_charts/scatter.py b/pyecharts/charts/basic_charts/scatter.py index b2a9cdd6..553c980d 100644 --- a/pyecharts/charts/basic_charts/scatter.py +++ b/pyecharts/charts/basic_charts/scatter.py @@ -22,6 +22,7 @@ class Scatter(AxisChart): series_name: str, y_axis: Sequence, *, + is_selected: bool = True, xaxis_index: Optional[Numeric] = None, yaxis_index: Optional[Numeric] = None, color: Optional[str] = None, @@ -42,7 +43,7 @@ class Scatter(AxisChart): tooltip_opts = tooltip_opts.opts self._append_color(color) - self._append_legend(series_name) + self._append_legend(series_name, is_selected) data = [list(z) for z in zip(self._xaxis_data, y_axis)] self.options.get("series").append( { diff --git a/pyecharts/charts/basic_charts/themeriver.py b/pyecharts/charts/basic_charts/themeriver.py index cc98bffb..27433df8 100644 --- a/pyecharts/charts/basic_charts/themeriver.py +++ b/pyecharts/charts/basic_charts/themeriver.py @@ -19,6 +19,8 @@ class ThemeRiver(Chart): self, series_name: Sequence, data: Sequence, + *, + is_selected: bool = True, label_opts: Union[opts.LabelOpts, dict] = opts.LabelOpts(), tooltip_opts: Union[opts.TooltipOpts, dict, None] = None, singleaxis_opts: Union[opts.SingleAxisOpts, dict] = opts.SingleAxisOpts(), @@ -31,7 +33,7 @@ class ThemeRiver(Chart): singleaxis_opts = singleaxis_opts.opts for n in series_name: - self._append_legend(n) + self._append_legend(n, is_selected) self.options.get("series").append( { diff --git a/pyecharts/charts/basic_charts/tree.py b/pyecharts/charts/basic_charts/tree.py index 7d30952e..083ca656 100644 --- a/pyecharts/charts/basic_charts/tree.py +++ b/pyecharts/charts/basic_charts/tree.py @@ -38,6 +38,7 @@ class Tree(Chart): self, series_name: str, data: Sequence, + *, layout: str = "orthogonal", symbol: str = "emptyCircle", symbol_size: Numeric = 7, diff --git a/pyecharts/charts/basic_charts/treemap.py b/pyecharts/charts/basic_charts/treemap.py index be343486..d403aad4 100644 --- a/pyecharts/charts/basic_charts/treemap.py +++ b/pyecharts/charts/basic_charts/treemap.py @@ -20,6 +20,8 @@ class TreeMap(Chart): self, series_name: str, data: Sequence, + *, + is_selected: bool = True, left_depth: Optional[Numeric] = None, pos_left: Optional[str] = None, pos_right: Optional[str] = None, @@ -36,7 +38,7 @@ class TreeMap(Chart): if isinstance(tooltip_opts, opts.TooltipOpts): tooltip_opts = tooltip_opts.opts - self._append_legend(series_name) + self._append_legend(series_name, is_selected) self.options.get("series").append( { "type": ChartType.TREEMAP, diff --git a/pyecharts/charts/basic_charts/wordcloud.py b/pyecharts/charts/basic_charts/wordcloud.py index 1b02b04e..3a9419fd 100644 --- a/pyecharts/charts/basic_charts/wordcloud.py +++ b/pyecharts/charts/basic_charts/wordcloud.py @@ -33,6 +33,7 @@ class WordCloud(Chart): self, series_name: str, data_pair: Sequence, + *, shape: str = "circle", word_gap: Numeric = 20, word_size_range=None, diff --git a/pyecharts/charts/chart.py b/pyecharts/charts/chart.py index 85934626..6540dbbf 100644 --- a/pyecharts/charts/chart.py +++ b/pyecharts/charts/chart.py @@ -20,7 +20,9 @@ class Chart(Base): if init_opts.theme == "white": self.options.update(color=self._colors) self.options.update( - series=[], legend=[{"data": []}], tooltip=opts.TooltipOpts().opts + series=[], + legend=[{"data": [], "selected": dict()}], + tooltip=opts.TooltipOpts().opts, ) def set_series_opts( @@ -84,8 +86,10 @@ class Chart(Base): s.update(tooltip=tooltip_opts) return self - def _append_legend(self, name): + def _append_legend(self, name, is_selected): self.options.get("legend")[0].get("data").append(name) + self.options.get("legend")[0].get("selected").update({name: is_selected}) + print(self.options.get("legend")[0]) def _append_color(self, color: Optional[str]): if color: diff --git a/pyecharts/charts/composite_charts/page.py b/pyecharts/charts/composite_charts/page.py index cc5ea660..e8ef7825 100644 --- a/pyecharts/charts/composite_charts/page.py +++ b/pyecharts/charts/composite_charts/page.py @@ -3,7 +3,7 @@ from jinja2 import Environment from ...commons import utils from ...commons.types import Optional -from ...globals import ThemeType, CurrentConfig +from ...globals import CurrentConfig, ThemeType from ...render.engine import RenderEngine