mirror of
https://github.com/pyecharts/pyecharts.git
synced 2025-12-08 20:59:23 +00:00
119 lines
3.3 KiB
Python
119 lines
3.3 KiB
Python
# coding=utf8
|
|
"""
|
|
Test cases for rendering in jupyter notebook
|
|
"""
|
|
from __future__ import unicode_literals
|
|
|
|
import json
|
|
from test.constants import CLOTHES, WEEK
|
|
|
|
import pyecharts.commons.consts as constants
|
|
from pyecharts import Bar, Line, Page, Pie, configure, enable_nteract, online
|
|
from pyecharts.conf import CURRENT_CONFIG
|
|
|
|
TITLE = "柱状图数据堆叠示例"
|
|
|
|
|
|
def create_a_bar(title):
|
|
v1 = [5, 20, 36, 10, 75, 90]
|
|
v2 = [10, 25, 8, 60, 20, 80]
|
|
bar = Bar(title)
|
|
bar.add("商家A", CLOTHES, v1, is_stack=True)
|
|
bar.add("商家B", CLOTHES, v2, is_stack=True)
|
|
return bar
|
|
|
|
|
|
def test_single_chart():
|
|
bar = create_a_bar(TITLE)
|
|
html = bar._repr_html_()
|
|
json_encoded_title = json.dumps(TITLE)
|
|
assert json_encoded_title in html
|
|
assert "require.config" in html
|
|
assert "function(options)" in html
|
|
assert "nbextensions/options" in html
|
|
assert "width:800px" in html
|
|
assert "height:400px" in html
|
|
assert "<div" in html
|
|
assert "myChart" in html
|
|
assert bar.chart_id in html
|
|
|
|
|
|
def test_page():
|
|
page = Page()
|
|
line = Line("折线图示例")
|
|
line.chart_id = "id_my_cell_line"
|
|
line.add(
|
|
"最高气温",
|
|
WEEK,
|
|
[11, 11, 15, 13, 12, 13, 10],
|
|
mark_point=["max", "min"],
|
|
mark_line=["average"],
|
|
)
|
|
line.add(
|
|
"最低气温",
|
|
WEEK,
|
|
[1, -2, 2, 5, 3, 2, 0],
|
|
mark_point=["max", "min"],
|
|
mark_line=["average"],
|
|
)
|
|
|
|
# pie
|
|
v1 = [11, 12, 13, 10, 10, 10]
|
|
pie = Pie("饼图-圆环图示例", title_pos="center", width="600px")
|
|
pie.add(
|
|
"",
|
|
CLOTHES,
|
|
v1,
|
|
radius=[40, 75],
|
|
label_text_color=None,
|
|
is_label_show=True,
|
|
legend_orient="vertical",
|
|
legend_pos="left",
|
|
)
|
|
|
|
page.add([line, pie, create_a_bar(TITLE)])
|
|
# Start render and test
|
|
html = page._repr_html_()
|
|
# Test base html structure
|
|
assert html.count("<script>") == html.count("</script>") == 2
|
|
assert html.count("<div") == html.count("</div>") == 3
|
|
assert html.count("require.config") == html.count("function(options)") == 1
|
|
# Test some chart attributes
|
|
json_encoded_title = json.dumps(TITLE)
|
|
assert json_encoded_title in html
|
|
assert "nbextensions/options" in html # default jshost
|
|
assert html.count("height:400px") == 3
|
|
assert html.count("width:600px") == 1
|
|
assert html.count("width:800px") == 2
|
|
assert html.count("id_my_cell_line") == 6
|
|
|
|
|
|
def test_online_feature():
|
|
online()
|
|
bar = create_a_bar(TITLE)
|
|
html = bar._repr_html_()
|
|
expected_jshost = "https://pyecharts.github.io/jupyter-options/options"
|
|
assert expected_jshost in html
|
|
CURRENT_CONFIG.hosted_on_github = False
|
|
|
|
|
|
def test_online_with_custom_jshost():
|
|
online(host="https://my-site.com/js")
|
|
bar = create_a_bar(TITLE)
|
|
html = bar._repr_html_()
|
|
expected_jshost = "https://my-site.com/js"
|
|
assert expected_jshost in html
|
|
CURRENT_CONFIG.jshost = None
|
|
|
|
|
|
def test_nteract_feature():
|
|
enable_nteract()
|
|
bar = create_a_bar(TITLE)
|
|
html = bar._repr_html_()
|
|
assert "https://pyecharts.github.io/assets/js/options.min.js" in html
|
|
assert "require" not in html
|
|
# restore configuration
|
|
configure(output_image=constants.DEFAULT_HTML)
|
|
CURRENT_CONFIG.jshost = None
|
|
CURRENT_CONFIG.hosted_on_github = False
|