mirror of
https://github.com/pyecharts/pyecharts.git
synced 2025-12-08 20:59:23 +00:00
111 lines
4.1 KiB
Python
111 lines
4.1 KiB
Python
import requests
|
|
import unittest
|
|
from unittest.mock import patch
|
|
|
|
from pyecharts import options as opts
|
|
from pyecharts.charts import Lines3D, Map3D
|
|
from pyecharts.globals import ChartType
|
|
|
|
|
|
class TestLines3DChart(unittest.TestCase):
|
|
@patch("pyecharts.render.engine.write_utf8_html_file")
|
|
def test_lines3d_base(self, fake_writer):
|
|
test_main_url: str = "https://echarts.apache.org/examples"
|
|
data_json_url = test_main_url + "/data-gl/asset/data/flights.json"
|
|
base_texture = test_main_url + "/data-gl/asset/world.topo.bathy.200401.jpg"
|
|
height_texture = test_main_url + "/data-gl/asset/bathymetry_bw_composite_4k.jpg"
|
|
|
|
resp = requests.get(data_json_url).json()
|
|
json_routes = resp.get("routes")
|
|
json_airports = resp.get("airports")
|
|
|
|
routes_data = []
|
|
for d in json_routes:
|
|
|
|
def _inner_func(idx):
|
|
return [json_airports[idx][3], json_airports[idx][4]]
|
|
|
|
routes_data.append([_inner_func(d[1]), _inner_func(d[2])])
|
|
|
|
c = (
|
|
Lines3D(init_opts=opts.InitOpts(bg_color="#000"))
|
|
.add_globe(
|
|
base_texture=base_texture,
|
|
height_texture=height_texture,
|
|
shading="lambert",
|
|
light_opts=opts.Map3DLightOpts(
|
|
ambient_intensity=0.4, main_intensity=0.4
|
|
),
|
|
)
|
|
.add(
|
|
series_name="1",
|
|
coordinate_system="globe",
|
|
blend_mode="lighter",
|
|
linestyle_opts=opts.LineStyleOpts(
|
|
width=1, color="rgb(50, 50, 150)", opacity=0.1
|
|
),
|
|
data_pair=routes_data,
|
|
)
|
|
)
|
|
c.render()
|
|
_, content = fake_writer.call_args[0]
|
|
self.assertEqual(c.theme, "white")
|
|
self.assertEqual(c.renderer, "canvas")
|
|
self.assertIn("baseTexture", content)
|
|
self.assertIn("heightTexture", content)
|
|
|
|
@patch("pyecharts.render.engine.write_utf8_html_file")
|
|
def test_lines3d_with_map3d_base(self, fake_writer):
|
|
example_data = [
|
|
[[119.107078, 36.70925, 1000], [116.587245, 35.415393, 1000]],
|
|
[[117.000923, 36.675807], [120.355173, 36.082982]],
|
|
[[118.047648, 36.814939], [118.66471, 37.434564]],
|
|
[[121.391382, 37.539297], [119.107078, 36.70925]],
|
|
[[116.587245, 35.415393], [122.116394, 37.509691]],
|
|
[[119.461208, 35.428588], [118.326443, 35.065282]],
|
|
[[116.307428, 37.453968], [115.469381, 35.246531]],
|
|
]
|
|
c = (
|
|
Map3D()
|
|
.add_schema(
|
|
maptype="山东",
|
|
itemstyle_opts=opts.ItemStyleOpts(
|
|
color="rgb(5,101,123)",
|
|
opacity=1,
|
|
border_width=0.8,
|
|
border_color="rgb(62,215,213)",
|
|
),
|
|
light_opts=opts.Map3DLightOpts(
|
|
main_color="#fff",
|
|
main_intensity=1.2,
|
|
is_main_shadow=False,
|
|
main_alpha=55,
|
|
main_beta=10,
|
|
ambient_intensity=0.3,
|
|
),
|
|
view_control_opts=opts.Map3DViewControlOpts(center=[-10, 0, 10]),
|
|
post_effect_opts=opts.Map3DPostEffectOpts(is_enable=False),
|
|
)
|
|
.add(
|
|
series_name="",
|
|
data_pair=example_data,
|
|
type_=ChartType.LINES3D,
|
|
effect=opts.Lines3DEffectOpts(
|
|
is_show=True,
|
|
period=4,
|
|
trail_width=3,
|
|
trail_length=0.5,
|
|
trail_color="#f00",
|
|
trail_opacity=1,
|
|
),
|
|
linestyle_opts=opts.LineStyleOpts(
|
|
is_show=False, color="#fff", opacity=0
|
|
),
|
|
)
|
|
.set_global_opts(title_opts=opts.TitleOpts(title="Map3D-Lines3D"))
|
|
)
|
|
c.render()
|
|
_, content = fake_writer.call_args[0]
|
|
self.assertEqual(c.theme, "white")
|
|
self.assertEqual(c.renderer, "canvas")
|