当前pyecharts
的版本为1.9.0。
概述
pyecharts/charts/composite_charts/
包中的四个模块分别定义了组合图表类,其中pyecharts/charts/composite_charts/tab.py
模块只定义了选项卡类Tab
。
Tab
类继承自图表基类CompositeMixin
,作用为利用选项卡(tab)控制多个图表的展示。输出的HTML结构如下:
创建一个选项div,每个图表对应一个按钮, 用于切换显示图表。
创建一个图表div,每个图表构造一个单独的div,作为图表容器,每个图表创建一个ECharts实例绘图。
Tab
类的签名为class Tab(page_title: str = "Awesome-pyecharts", js_host: str = "")
。
Tab
类的属性如下:
js_host
:JavaScript库的URL。字符串,默认值为全局变量CurrentConfig.ONLINE_HOST
。属性值为构造方法参数js_host
与全局变量CurrentConfig.ONLINE_HOST
进行或操作的结果。page_title
:页面标题。字符串,默认值为全局变量CurrentConfig.PAGE_TITLE
。download_button
:是否显示下载按钮。布尔值。默认值为False
。js_functions
:自定义JavaScript语句。类型为OrderedSet
对象。默认值为OrderedSet()
。js_dependencies
:定义JavaScript依赖库。类型为OrderedSet
对象。默认值为OrderedSet("echarts")
。_charts
:容器中图表实例列表。类型为列表。默认值为[]
。
Tab
类的方法如下:
add(chart,tab_name)
:将图表类实例添加到选项卡中。chart
参数为图表类实例,参数值将被添加到_charts
属性中;tab_name
参数为选项卡名称,将会为图表类实例添加tab_name
属性。render
:调用render
包engine
模块中的render
函数渲染HTML文档。默认渲染模板为"simple_tab.html"
。render_embed
:调用render
包engine
模块中的render_embed
函数输出HTML字符串。默认渲染模板为"simple_tab.html"
。render_notebook
:调用render
包engine
模块中的render_notebook
函数将输出嵌入到notebook中。默认渲染模板为"nb_jupyter_notebook_tab.html"
或"nb_jupyter_lab_tab.html"
。
简易选项卡tab案例
from pyecharts.charts import Line, Tab
a = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
b1 = [5, 20, 36, 10, 75, 90]
b2 = [7, 25, 31, 14, 65, 100]
line1 = Line()
line1.add_xaxis(a)
line1.add_yaxis("", b1)
line2 = Line()
line2.add_xaxis(a)
line2.add_yaxis("", b2)
tab = Tab()
tab.add(line1,"first")
tab.add(line2,"second")
tab.render()
Tab
类源码
class Tab(CompositeMixin):
def __init__(self, page_title: str = CurrentConfig.PAGE_TITLE, js_host: str = ""):
self.js_host: str = js_host or CurrentConfig.ONLINE_HOST
self.page_title: str = page_title
self.download_button: bool = False
self.js_functions: utils.OrderedSet = utils.OrderedSet()
self.js_dependencies: utils.OrderedSet = utils.OrderedSet()
self._charts: list = []
def add(self, chart, tab_name):
chart.tab_name = tab_name
self._charts.append(chart)
for d in chart.js_dependencies.items:
self.js_dependencies.add(d)
return self
def _prepare_render(self):
for c in self:
if hasattr(c, "dump_options"):
c.json_contents = c.dump_options()
if hasattr(c, "theme"):
if c.theme not in ThemeType.BUILTIN_THEMES:
self.js_dependencies.add(c.theme)
def render(
self,
path: str = "render.html",
template_name: str = "simple_tab.html",
env: types.Optional[Environment] = None,
**kwargs,
) -> str:
self._prepare_render()
return engine.render(self, path, template_name, env, **kwargs)
def render_embed(
self,
template_name: str = "simple_tab.html",
env: types.Optional[Environment] = None,
**kwargs,
) -> str:
self._prepare_render()
return engine.render_embed(self, template_name, env, **kwargs)
def render_notebook(self):
self._prepare_render()
# only notebook env need to re-generate chart_id
for c in self:
c.chart_id = uuid.uuid4().hex
return engine.render_notebook(
self, "nb_jupyter_notebook_tab.html", "nb_jupyter_lab_tab.html"
)