Pyecharts 를 어떻게 사용 하여 Map3D 를 만 드 는 지 상세 하 게 설명 합 니 다.
class Map3D(
# , `global_options.InitOpts`
init_opts: opts.InitOpts = opts.InitOpts()
)
def add(
# , tooltip ,legend 。
series_name: str,
# ( , )
data_pair: types.Sequence,
# ( Bar3D,Line3D,Lines3D,Scatter3D)
type_: ChartType = None,
# , pyecharts.datasets.map_filenames.json
maptype: str = "china",
#
is_selected: bool = True,
#
is_map_symbol_show: bool = True,
# grid3D 。 grid3D 。
grid_3d_index: types.Numeric = 0,
# geo3D 。 geo3D 。
geo_3d_index: types.Numeric = 0,
# globe 。 globe 。
globe_index: types.Numeric = 0,
# bar3D
#
bar_size: types.Optional[types.Numeric] = None,
# bar3D
# 。 0 1 。 0, 。
bevel_size: types.Numeric = 0,
# bar3D
# / , / 。
bevel_smoothness: types.Numeric = 2,
# bar3D
# , stack 。
# 。
stack: types.Optional[str] = None,
# bar3D
# 。
min_height: types.Numeric = 2,
# Scatter3D ;
# 。 。
# ECharts 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow', 'none'
# 'path://' 。
# , , 。
# ( symbol symbolSize) 。
symbol: str = "circle",
# Scatter3D ;
# , 10 , , [20, 10] 20, 10。
symbol_size: types.Union[types.Numeric, types.Sequence, types.JSFunc] = 10,
# , 'source-over','lighter'。
# 'source-over' alpha 。
# 'lighter' , 。
blend_mode: str = "source-over",
# Lines3D
# 。
# false, ( )。
# true, data.coords 2 , 。
is_polyline: bool = False,
# Lines3D
# , `series_options.Line3DEffectOpts`
effect: types.Lines3DEffect = None,
# Line3D,Lines3D
# , `series_options.LineStyleOpts`
linestyle_opts: types.LineStyle = opts.LineStyleOpts(),
# Scatter3D,Bar3D,Map3D
# , `series_options.LabelOpts`
label_opts: types.Label = opts.LabelOpts(),
# , `series_options.TooltipOpts`
tooltip_opts: types.Tooltip = None,
# Scatter3D,Bar3D,Map3D
# , `series_options.ItemStyleOpts`
itemstyle_opts: types.ItemStyle = None,
# Scatter3D,Bar3D,Map3D
# , `series_options.LabelOpts`
emphasis_label_opts: types.Label = None,
# Scatter3D,Bar3D,Map3D
# , `series_options.ItemStyleOpts`
emphasis_itemstyle_opts: types.ItemStyle = None,
# 。echarts-gl :
# color: , 。
# lambert: lambert 。
# realistic: , light.ambientCubemap postEffect 。
# ECharts GL (PBR) 。
shading: types.Optional[str] = None,
# , shading 'realistic' 。
realistic_material_opts: types.Optional[types.Map3DRealisticMaterial] = None,
# lambert , shading 'lambert' 。
lambert_material_opts: types.Optional[types.Map3DLambertMaterial] = None,
# color , shading 'color' 。
color_material_opts: types.Optional[types.Map3DColorMaterial] = None,
# 。
zlevel: types.Numeric = -10,
# , false, 。
is_silent: bool = False,
# 。
is_animation: bool = True,
# 。
animation_duration_update: types.Numeric = 100,
# 。
animation_easing_update: types.Numeric = "cubicOut",
)
def add_schema(
# , pyecharts.datasets.map_filenames.json
maptype: str = "china",
#
name: types.Optional[str] = None,
# 。
# : https://www.echartsjs.com/zh/documents/asset/gl/img/geo-size.png
box_width: types.Optional[types.Numeric] = 100,
# 。
# 。 、 。
box_height: types.Optional[types.Numeric] = 10,
# 。
# , GeoJSON 。
box_depth: types.Optional[types.Numeric] = None,
# 。 , boxHeight。
# boxHeight - regionHeight , 。
region_height: types.Optional[types.Numeric] = 3,
# 。 、 、 url。
# 'auto', light.ambientCubemap.texture 。
# 。
# :
# //
# environment: 'asset/starfield.jpg'
# //
# environment: '#000'
# //
# environment: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
# offset: 0, color: '#00aaff' //
# }, {
# offset: 0.7, color: '#998866' //
# }, {
# offset: 1, color: '#998866' //
# }], false)
environment: types.Optional[types.JSFunc] = None,
# 。
# “ ” , , 。
is_show_ground: bool = False,
# 。
ground_color: str = "#aaa",
# instancing GeoJSON geometry
# GeoJSON ( ) geometry 。
is_instancing: bool = False,
# Map3D Label
map3d_label: types.Map3DLabel = None,
# , `series_options.ItemStyleOpts`
itemstyle_opts: types.ItemStyle = None,
# , `series_options.LabelOpts`
emphasis_label_opts: types.Label = None,
# , `series_options.ItemStyleOpts`
emphasis_itemstyle_opts: types.ItemStyle = None,
# 。echarts-gl :
# color: , 。
# lambert: lambert 。
# realistic: , light.ambientCubemap postEffect 。
# ECharts GL (PBR) 。
shading: types.Optional[str] = None,
# , shading 'realistic' 。
realistic_material_opts: types.Optional[types.Map3DRealisticMaterial] = None,
# lambert , shading 'lambert' 。
lambert_material_opts: types.Optional[types.Map3DLambertMaterial] = None,
# color , shading 'color' 。
color_material_opts: types.Optional[types.Map3DColorMaterial] = None,
# 。 shading 'color' 。
# 。
# , 。
light_opts: types.Optional[types.Map3DLight] = None,
# 。 、 、 (SSAO)、 。 。
post_effect_opts: types.Optional[types.Map3DPostEffect] = None,
# 。 postEffect 。
is_enable_super_sampling: types.Union[str, bool] = "auto",
# viewControl , 。
view_control_opts: types.Optional[types.Map3DViewControl] = None,
# 。
zlevel: types.Optional[types.Numeric] = -10,
# 。
# left 20 , '20%' ,
# 'left', 'center', 'right'。
# left 'left', 'center', 'right', 。
pos_left: types.Union[types.Numeric, str] = "auto",
# 。
pos_top: types.Union[types.Numeric, str] = "auto",
# 。
pos_right: types.Union[types.Numeric, str] = "auto",
# 。
pos_bottom: types.Union[types.Numeric, str] = "auto",
# 。
pos_width: types.Union[types.Numeric, str] = "auto",
# 。
pos_height: types.Union[types.Numeric, str] = "auto",
)
class Map3DLabelOpts(
# 。
is_show: bool = True,
# , , 。
distance: Numeric = None,
# , ,
。
# :
# {a}: 。
# {b}: 。
# {c}: 。
formatter: Optional[JSFunc] = None,
# 。
text_style: Union[TextStyleOpts, dict, None] = None,
)
class Map3DRealisticMaterialOpts(
# 。
detail_texture: Optional[JSFunc] = None,
# 。 1, 。 1 , 。
# : detailTexture 2 n 。 512x512, 200x200 。
texture_tiling: Numeric = 1,
# 。
texture_offset: Numeric = 0,
# roughness ,0 ,1 , 。
roughness: Numeric = 0.5,
# metalness ,0 ,1 , 。
# 0 1 。
metalness: Numeric = 0,
# , 。 。
# 0.5,0 ,1 。
roughness_adjust: Numeric = 0.5,
# , 。 。
# 0.5,0 ,1 。
metalness_adjust: Numeric = 0.5,
# 。
# 。
normal_texture: Optional[JSFunc] = None,
)
class Map3DLambertMaterialOpts(
# 。
detail_texture: Optional[JSFunc] = None,
# 。 1, 。 1 , 。
# : detailTexture 2 n 。 512x512, 200x200 。
texture_tiling: Numeric = 1,
# 。
texture_offset: Numeric = 0,
)
class Map3DColorMaterialOpts(
# 。
detail_texture: Optional[JSFunc] = None,
# 。 1, 。 1 , 。
# : detailTexture 2 n 。 512x512, 200x200 。
texture_tiling: Numeric = 1,
# 。
texture_offset: Numeric = 0,
)
class Map3DLightOpts(
# 。
main_color: str = "#fff",
# 。
main_intensity: Numeric = 1,
# 。 。
# 。 。
is_main_shadow: bool = False,
# 。 'low', 'medium', 'high', 'ultra'
main_shadow_quality: str = "medium",
# x , 。 beta 。
# : https://www.echartsjs.com/zh/documents/asset/gl/img/light-alpha-beta.png
main_alpha: Numeric = 40,
# y , 。
main_beta: Numeric = 40,
# 。
ambient_color: str = "#fff",
# 。
ambient_intensity: Numeric = 0.2,
# url, .hdr HDR 。
# http://www.hdrlabs.com/sibl/archive.html .hdr 。
ambient_cubemap_texture: Optional[str] = None,
# 。
ambient_cubemap_diffuse_intensity: Numeric = 0.5,
# 。
ambient_cubemap_specular_intensity: Numeric = 0.5,
)
class Map3DPostEffectOpts(
# 。 。
is_enable: bool = False,
# 。
is_bloom_enable: bool = False,
# , 0.1
bloom_intensity: Numeric = 0.1,
# 。
is_depth_field_enable: bool = False,
# , 。
depth_field_focal_distance: Numeric = 50,
# , ,
depth_field_focal_range: Numeric = 20,
# F , 。
depth_field_fstop: Numeric = 2.8,
#
depth_field_blur_radius: Numeric = 10,
# 。 。
is_ssao_enable: bool = False,
# 。 'low', 'medium', 'high', 'ultra'。
ssao_quality: str = "medium",
# 。 , 'quality'。
ssao_radius: Numeric = 2,
# 。 。
ssao_intensity: Numeric = 1,
# 。
is_color_correction_enable: bool = False,
# Echarts 。
# :https://www.echartsjs.com/zh/option-gl.html#geo3D.postEffect.colorCorrection.lookupTexture
color_correction_lookup_texture: Optional[JSFunc] = None,
# 。
color_correction_exposure: Numeric = 0,
# 。
color_correction_brightness: Numeric = 0,
# 。
color_correction_contrast: Numeric = 1,
# 。
color_correction_saturation: Numeric = 1,
# FXAA。 。
is_fxaa_enable: bool = False,
)
class Map3DViewControlOpts(
# , 'perspective', 'orthographic'。
projection: str = "perspective",
# 。
auto_rotate: bool = False,
# 。 'cw' , 'ccw', 。
auto_rotate_direction: str = "cw",
# 。 / , 10 , 36 。
auto_rotate_speed: Numeric = 10,
# 。 autoRotate 。
auto_rotate_after_still: Numeric = 3,
# , , 0 , ( )。
damping: Numeric = 0.8,
# , 。 。
# 1。
# 0 。
# //
# rotateSensitivity: 0
# //
# rotateSensitivity: [1, 0]
# //
# rotateSensitivity: [0, 1]
rotate_sensitivity: Union[Numeric, Sequence] = 1,
# , 。 1。
# 0 。
zoom_sensitivity: Numeric = 1,
# , 。
# 1。
# 0 。
pan_sensitivity: Numeric = 1,
# , :
# 'left' ( )
# 'middle'
# 'right'
# : 。
pan_mouse_button: str = "left",
# , :
# 'left' ( )
# 'middle'
# 'right'
# : 。
rotate_mouse_button: str = "middle",
# , globe
# grid3D geo3D 。
# projection 'perspective' 。
distance: Numeric = 100,
# 。 projection 'perspective' 。
min_distance: Numeric = 40,
# 。 projection 'perspective' 。
max_distance: Numeric = 400,
# 。 projection 'orthographic' 。
orthographic_size: Numeric = 100,
# 。 projection 'orthographic' 。
min_orthographic_size: Numeric = 20,
# 。 projection 'orthographic' 。
max_orthographic_size: Numeric = 400,
# x , 。 beta 。
alpha: Numeric = 40,
# y , 。
beta: Numeric = 0,
# , , [0,0,0]。
center: Optional[Sequence] = None,
# alpha 。 。
min_alpha: Numeric = 5,
# alpha 。 。
max_alpha: Numeric = 90,
# beta 。 。
min_beta: Numeric = -80,
# beta 。 。
max_beta: Numeric = 80,
# 。
animation: bool = True,
# 。
animation_duration_update: Numeric = 1000,
# 。
animation_easing_update: str = "cubicInOut",
)
데모 예시1.이동 궤적 이 있 는 3D 맵
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]],
]
from pyecharts import options as opts
from pyecharts.charts import Map3D
from pyecharts.globals import ChartType
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=" 3D "))
# .render(" 3D .html")
)
c.render_notebook()
2.데이터 마크 포인트 의 3D 맵
example_data = [
(" ", [127.9688, 45.368, 100]),
(" ", [110.3467, 41.4899, 100]),
(" ", [125.8154, 44.2584, 100]),
(" ", [123.1238, 42.1216, 100]),
(" ", [114.4995, 38.1006, 100]),
(" ", [117.4219, 39.4189, 100]),
(" ", [112.3352, 37.9413, 100]),
(" ", [109.1162, 34.2004, 100]),
(" ", [103.5901, 36.3043, 100]),
(" ", [106.3586, 38.1775, 100]),
(" ", [101.4038, 36.8207, 100]),
(" ", [87.9236, 43.5883, 100]),
(" ", [91.11, 29.97, 100]),
(" ", [103.9526, 30.7617, 100]),
(" ", [108.384366, 30.439702, 100]),
(" ", [117.1582, 36.8701, 100]),
(" ", [113.4668, 34.6234, 100]),
(" ", [118.8062, 31.9208, 100]),
(" ", [117.29, 32.0581, 100]),
(" ", [114.3896, 30.6628, 100]),
(" ", [119.5313, 29.8773, 100]),
(" ", [119.4543, 25.9222, 100]),
(" ", [116.0046, 28.6633, 100]),
(" ", [113.0823, 28.2568, 100]),
(" ", [106.6992, 26.7682, 100]),
(" ", [108.479, 23.1152, 100]),
(" ", [110.3893, 19.8516, 100]),
(" ", [121.4648, 31.2891, 100]),
]
from pyecharts import options as opts
from pyecharts.charts import Map3D
from pyecharts.globals import ChartType
from pyecharts.commons.utils import JsCode
c = (
Map3D()
.add_schema(
itemstyle_opts=opts.ItemStyleOpts(
color="rgb(5,101,123)",
opacity=1,
border_width=0.8,
border_color="rgb(62,215,213)",
),
map3d_label=opts.Map3DLabelOpts(
is_show=False,
formatter=JsCode("function(data){return data.name + " " + data.value[2];}"),
),
emphasis_label_opts=opts.LabelOpts(
is_show=False,
color="#fff",
font_size=10,
background_color="rgba(0,23,11,0)",
),
light_opts=opts.Map3DLightOpts(
main_color="#fff",
main_intensity=1.2,
main_shadow_quality="high",
is_main_shadow=False,
main_beta=10,
ambient_intensity=0.3,
),
)
.add(
series_name="Scatter3D",
data_pair=example_data,
type_=ChartType.SCATTER3D,
bar_size=1,
shading="lambert",
label_opts=opts.LabelOpts(
is_show=False,
formatter=JsCode("function(data){return data.name + ' ' + data.value[2];}"),
),
)
.set_global_opts(title_opts=opts.TitleOpts(title=" 3D "))
# .render(" 3D .html")
)
c.render_notebook()
3.3D 막대 그래프 의 3D 지도
example_data = [
(" ", [127.9688, 45.368, 100]),
(" ", [110.3467, 41.4899, 300]),
(" ", [125.8154, 44.2584, 300]),
(" ", [123.1238, 42.1216, 300]),
(" ", [114.4995, 38.1006, 300]),
(" ", [117.4219, 39.4189, 300]),
(" ", [112.3352, 37.9413, 300]),
(" ", [109.1162, 34.2004, 300]),
(" ", [103.5901, 36.3043, 300]),
(" ", [106.3586, 38.1775, 300]),
(" ", [101.4038, 36.8207, 300]),
(" ", [87.9236, 43.5883, 300]),
(" ", [91.11, 29.97, 300]),
(" ", [103.9526, 30.7617, 300]),
(" ", [108.384366, 30.439702, 300]),
(" ", [117.1582, 36.8701, 300]),
(" ", [113.4668, 34.6234, 300]),
(" ", [118.8062, 31.9208, 300]),
(" ", [117.29, 32.0581, 300]),
(" ", [114.3896, 30.6628, 300]),
(" ", [119.5313, 29.8773, 300]),
(" ", [119.4543, 25.9222, 300]),
(" ", [116.0046, 28.6633, 300]),
(" ", [113.0823, 28.2568, 300]),
(" ", [106.6992, 26.7682, 300]),
(" ", [108.479, 23.1152, 300]),
(" ", [110.3893, 19.8516, 300]),
(" ", [121.4648, 31.2891, 1300]),
]
from pyecharts import options as opts
from pyecharts.charts import Map3D
from pyecharts.globals import ChartType
from pyecharts.commons.utils import JsCode
c = (
Map3D()
.add_schema(
itemstyle_opts=opts.ItemStyleOpts(
color="rgb(5,101,123)",
opacity=1,
border_width=0.8,
border_color="rgb(62,215,213)",
),
map3d_label=opts.Map3DLabelOpts(
is_show=False,
formatter=JsCode("function(data){return data.name + " " + data.value[2];}"),
),
emphasis_label_opts=opts.LabelOpts(
is_show=False,
color="#fff",
font_size=10,
background_color="rgba(0,23,11,0)",
),
light_opts=opts.Map3DLightOpts(
main_color="#fff",
main_intensity=1.2,
main_shadow_quality="high",
is_main_shadow=False,
main_beta=10,
ambient_intensity=0.3,
),
)
.add(
series_name="bar3D",
data_pair=example_data,
type_=ChartType.BAR3D,
bar_size=1,
shading="lambert",
label_opts=opts.LabelOpts(
is_show=False,
formatter=JsCode("function(data){return data.name + ' ' + data.value[2];}"),
),
)
.set_global_opts(title_opts=opts.TitleOpts(title="3D 3D "))
# .render("3D 3D .html")
)
c.render_notebook()
4.전국 행정구 역 지도
from pyecharts import options as opts
from pyecharts.charts import Map3D
from pyecharts.globals import ChartType
c = (
Map3D()
.add_schema(
itemstyle_opts=opts.ItemStyleOpts(
color="rgb(5,101,123)",
opacity=1,
border_width=0.8,
border_color="rgb(62,215,213)",
),
map3d_label=opts.Map3DLabelOpts(
is_show=True,
text_style=opts.TextStyleOpts(
color="#fff", font_size=16, background_color="rgba(0,0,0,0)"
),
),
emphasis_label_opts=opts.LabelOpts(is_show=True),
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,
),
)
.add(series_name="", data_pair="", maptype=ChartType.MAP3D)
.set_global_opts(
title_opts=opts.TitleOpts(title="China 3D Map-Base"),
visualmap_opts=opts.VisualMapOpts(is_show=False),
tooltip_opts=opts.TooltipOpts(is_show=True),
)
# .render(" .html")
)
c.render_notebook()
5.세계 인구 분포 지도
import pyecharts.options as opts
from pyecharts.charts import MapGlobe
from pyecharts.faker import POPULATION
data = [x for _, x in POPULATION[1:]]
low, high = min(data), max(data)
c = (
MapGlobe()
.add_schema()
.add(
maptype="world",
series_name=" ",
data_pair=POPULATION[1:],
is_map_symbol_show=False,
label_opts=opts.LabelOpts(is_show=False),
)
.set_global_opts(
visualmap_opts=opts.VisualMapOpts(
min_=low,
max_=high,
range_text=["max", "min"],
is_calculable=True,
range_color=["lightskyblue", "yellow", "orangered"],
)
)
# .render(" .html")
)
c.render_notebook()
Pyecharts 를 사용 하여 Map3D 를 만 드 는 방법 에 대한 자세 한 설명 은 여기까지 입 니 다.더 많은 Pyecharts 제작 Map3D 콘 텐 츠 는 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.