Add: kline example

This commit is contained in:
chenjiandongx 2019-03-26 14:00:34 +08:00
parent 5cdc70f08c
commit 400202f41d
5 changed files with 130 additions and 22 deletions

View File

@ -134,7 +134,7 @@ def bar_markline_custom() -> Bar:
.set_series_opts(
label_opts=opts.LabelOpts(is_show=False),
markline_opts=opts.MarkLineOpts(
data=[opts.MarkLineItem(yaxis=50, name="yAxis=50")]
data=[opts.MarkLineItem(y=50, name="yAxis=50")]
),
)
)

View File

@ -1,10 +1,11 @@
from pyecharts.charts import Kline
from pyecharts.options import *
# coding=utf-8
from example.commons import Collector
from pyecharts import options as opts
from pyecharts.charts import Kline, Page
kline = Kline()
kline.add_xaxis(["2017/7/{}".format(i + 1) for i in range(31)])
C = Collector()
v1 = [
data = [
[2320.26, 2320.26, 2287.3, 2362.94],
[2300, 2291.3, 2288.26, 2308.38],
[2295.35, 2346.5, 2295.35, 2345.92],
@ -38,10 +39,108 @@ v1 = [
[2255.77, 2270.28, 2253.31, 2276.22],
]
kline.add_yaxis("kline", v1)
kline.set_global_opts(xaxis_opt=AxisOpts(name="x轴"), yaxis_opt=AxisOpts(name="y轴"))
kline.render()
# self._option.get("xAxis")[0]["scale"] = True
# self._option.get("yAxis")[0]["scale"] = True
# self._option.get("yAxis")[0]["splitArea"] = {"show": True}
@C.funcs
def kline_base() -> Kline:
c = (
Kline()
.add_xaxis(["2017/7/{}".format(i + 1) for i in range(31)])
.add_yaxis("kline", data)
.set_global_opts(
yaxis_opts=opts.AxisOpts(is_scale=True),
xaxis_opts=opts.AxisOpts(is_scale=True),
title_opts=opts.TitleOpts(title="Kline-基本示例"),
)
)
return c
@C.funcs
def kline_splitarea() -> Kline:
c = (
Kline()
.add_xaxis(["2017/7/{}".format(i + 1) for i in range(31)])
.add_yaxis("kline", data)
.set_global_opts(
xaxis_opts=opts.AxisOpts(is_scale=True),
yaxis_opts=opts.AxisOpts(
is_scale=True,
splitarea_opts=opts.SplitAreaOpts(
is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)
),
),
title_opts=opts.TitleOpts(title="Kline-显示分割区域"),
)
)
return c
@C.funcs
def kline_datazoom_slider() -> Kline:
c = (
Kline()
.add_xaxis(["2017/7/{}".format(i + 1) for i in range(31)])
.add_yaxis("kline", data)
.set_global_opts(
xaxis_opts=opts.AxisOpts(is_scale=True),
yaxis_opts=opts.AxisOpts(
is_scale=True,
splitarea_opts=opts.SplitAreaOpts(
is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)
),
),
datazoom_opts=[opts.DataZoomOpts()],
title_opts=opts.TitleOpts(title="Kline-DataZoom-slider"),
)
)
return c
@C.funcs
def kline_datazoom_inside() -> Kline:
c = (
Kline()
.add_xaxis(["2017/7/{}".format(i + 1) for i in range(31)])
.add_yaxis("kline", data)
.set_global_opts(
xaxis_opts=opts.AxisOpts(is_scale=True),
yaxis_opts=opts.AxisOpts(
is_scale=True,
splitarea_opts=opts.SplitAreaOpts(
is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)
),
),
datazoom_opts=[opts.DataZoomOpts(type_="inside")],
title_opts=opts.TitleOpts(title="Kline-DataZoom-inside"),
)
)
return c
@C.funcs
def kline_markline() -> Kline:
c = (
Kline()
.add_xaxis(["2017/7/{}".format(i + 1) for i in range(31)])
.add_yaxis(
"kline",
data,
markline_opts=opts.MarkLineOpts(
data=[opts.MarkLineItem(type_="max", value_dim="close")]
),
)
.set_global_opts(
xaxis_opts=opts.AxisOpts(is_scale=True),
yaxis_opts=opts.AxisOpts(
is_scale=True,
splitarea_opts=opts.SplitAreaOpts(
is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)
),
),
title_opts=opts.TitleOpts(title="Kline-MarkLine"),
)
)
return c
Page().add(*[fn() for fn, _ in C.charts]).render()

View File

@ -102,7 +102,7 @@ class Polar(Chart):
"z": angleaxis_z_index,
}
if type in ("scatter", "line"):
if type_ in ("scatter", "line"):
self.options.get("series").append(
{
"type": type_,
@ -116,7 +116,7 @@ class Polar(Chart):
}
)
elif type == "effectScatter":
elif type_ == "effectScatter":
self.options.get("series").append(
{
"type": type_,
@ -131,17 +131,17 @@ class Polar(Chart):
}
)
elif type == "barRadius":
elif type_ == "barRadius":
self.options.get("series").append(bar_type_series)
self.options.update(angleAxis={})
self.options.update(radiusAxis=radius_axis_opt)
elif type == "barAngle":
elif type_ == "barAngle":
self.options.get("series").append(bar_type_series)
self.options.update(radiusAxis={"show": is_radiusaxis_show})
self.options.update(angleAxis=angle_axis_opt)
elif type == "custom":
elif type_ == "custom":
assert render_item is not None
self.options.get("series").append(
{
@ -153,7 +153,7 @@ class Polar(Chart):
}
)
if type not in ("barAngle", "barRadius"):
if type_ not in ("barAngle", "barRadius"):
self.options.update(angleAxis=angle_axis_opt)
self.options.update(radiusAxis=radius_axis_opt)
self.options.update(polar={})

View File

@ -4,6 +4,7 @@ from ..globals import RenderType
from ..options.series_options import (
LabelOpts,
LineStyleOpts,
SplitAreaOpts,
SplitLineOpts,
TextStyleOpts,
)
@ -257,11 +258,14 @@ class AxisOpts:
max_: Optional[Numeric] = None,
type_: Optional[str] = None,
name_textstyle_opts: Union[TextStyleOpts, dict, None] = None,
splitarea_opts: Union[SplitAreaOpts, dict, None] = None,
splitline_opts: Union[SplitLineOpts, dict] = SplitLineOpts(),
linestyle_opts: Union[LineStyleOpts, dict] = LineStyleOpts(),
):
if isinstance(name_textstyle_opts, TextStyleOpts):
name_textstyle_opts = name_textstyle_opts.opts
if isinstance(splitarea_opts, SplitAreaOpts):
splitarea_opts = splitarea_opts.opts
if isinstance(splitline_opts, SplitLineOpts):
splitline_opts = splitline_opts.opts
if isinstance(linestyle_opts, LineStyleOpts):
@ -285,6 +289,7 @@ class AxisOpts:
"max": max_,
"type": type_,
"splitLine": splitline_opts,
"splitArea": splitarea_opts,
"axisLine": {"lineStyle": linestyle_opts},
}

View File

@ -140,8 +140,10 @@ class MarkLineItem:
self,
name: Optional[str] = None,
type_: Optional[str] = None,
xaxis: Union[str, Numeric, None] = None,
yaxis: Union[str, Numeric, None] = None,
x: Union[str, Numeric, None] = None,
y: Union[str, Numeric, None] = None,
value_index: Optional[Numeric] = None,
value_dim: Optional[str] = None,
coord: Optional[Sequence] = None,
symbol: Optional[str] = None,
symbol_size: Optional[Numeric] = None,
@ -149,8 +151,10 @@ class MarkLineItem:
self.opts: dict = {
"name": name,
"type": type_,
"xAxis": xaxis,
"yAxis": yaxis,
"valueIndex": value_index,
"valueDim": value_dim,
"xAxis": x,
"yAxis": y,
"coord": coord,
"symbol": symbol,
"symbolSize": symbol_size,