Scatter(散点图)
直角坐标系上的散点图可以用来展现数据的 x,y 之间的关系,如果数据项有多个维度,可以用颜色来表现,利用 geo 组件。
Scatter.add()
方法签名
add(name, x_axis, y_axis,
extra_data=None,
symbol_size=10, **kwargs)
name -> str
图例名称
x_axis -> list
x 坐标轴数据
y_axis -> list
y 坐标轴数据
extra_data -> list[int]
第三维度数据,x 轴为第一个维度,y 轴为第二个维度。(可在 visualmap 中将视图元素映射到第三维度)
extra_name -> list[str]
额外的数据项的名称,可以为每个数据点指定一个名称。
symbol_size -> int
标记图形大小,默认为 10
from pyecharts import Scatter
v1 = [10, 20, 30, 40, 50, 60]
v2 = [10, 20, 30, 40, 50, 60]
scatter = Scatter("散点图示例")
scatter.add("A", v1, v2)
scatter.add("B", v1[::-1], v2)
scatter.render()
利用 Visualmap 组件,通过颜色映射数值 is_visualmap=True
scatter = Scatter("散点图示例")
scatter.add("A", v1, v2)
scatter.add("B", v1[::-1], v2, is_visualmap=True)
scatter.render()
利用 Visualmap 组件,通过图形点大小映射数值
visual_type="size"
,
visual_range_size=[20, 80]
scatter = Scatter("散点图示例")
scatter.add("A", v1, v2)
scatter.add(
"B",
v1[::-1],
v2,
is_visualmap=True,
visual_type="size",
visual_range_size=[20, 80],
)
scatter.render()
利用 Visualmap 组件映射到第三维度数据
data = [
[28604, 77, 17096869],
[31163, 77.4, 27662440],
[1516, 68, 1154605773],
[13670, 74.7, 10582082],
[28599, 75, 4986705],
[29476, 77.1, 56943299],
[31476, 75.4, 78958237],
[28666, 78.1, 254830],
[1777, 57.7, 870601776],
[29550, 79.1, 122249285],
[2076, 67.9, 20194354],
[12087, 72, 42972254],
[24021, 75.4, 3397534],
[43296, 76.8, 4240375],
[10088, 70.8, 38195258],
[19349, 69.6, 147568552],
[10670, 67.3, 53994605],
[26424, 75.7, 57110117],
[37062, 75.4, 252847810]
]
x_lst = [v[0] for v in data]
y_lst = [v[1] for v in data]
extra_data = [v[2] for v in data]
sc = Scatter()
sc.add(
"scatter",
x_lst,
y_lst,
extra_data=extra_data,
is_visualmap=True,
visual_dimension=2,
visual_orient="horizontal",
visual_type="size",
visual_range=[254830, 1154605773],
visual_text_color="#000",
)
sc.render()
散点图默认的坐标轴都为数值轴,如果想实现横坐标为类目轴,可通过 xaxis_type
修改
scatter = Scatter("散点图示例")
scatter.add("A", ["a", "b", "c", "d", "e", "f"], v2)
scatter.add("B", ["a", "b", "c", "d", "e", "f"], v1[::-1], xaxis_type="category")
scatter.render()
EffectScatter(带有涟漪特效动画的散点图)
利用动画特效可以将某些想要突出的数据进行视觉突出。
EffectScatter.add()
方法签名
add(name, x_axis, y_axis,
symbol_size=10, **kwargs)
name –> str : 图例名称
x_axis –> list : x 坐标轴数据
y_axis –> list : y 坐标轴数据
symbol_size –> int : 标记图形大小.
symbol –> str : 标记图形, 有 “rect”, “roundRect”, “triangle”, “diamond”, “pin”, “arrow” 可选.
effect_brushtype –> str : 波纹绘制方式, 有 “stroke”, “fill” 可选, 默认为 “stroke”
effect_scale –> float : 动画中波纹的最大缩放比例, 默认为 2.5
effect_period –> float : 动画持续时间, 默认为 4s.
from pyecharts import EffectScatter
v1 = [10, 20, 30, 40, 50, 60]
v2 = [25, 20, 15, 10, 60, 33]
es = EffectScatter("动态散点图示例")
es.add("effectScatter", v1, v2)
es.render()
动态散点图各种图形
es = EffectScatter("动态散点图各种图形示例")
es.add(
"",
[10],
[10],
symbol_size=20,
effect_scale=3.5,
effect_period=3,
symbol="pin",
)
es.add(
"",
[20],
[20],
symbol_size=12,
effect_scale=4.5,
effect_period=4,
symbol="rect",
)
es.add(
"",
[30],
[30],
symbol_size=30,
effect_scale=5.5,
effect_period=5,
symbol="roundRect",
)
es.add(
"",
[40],
[40],
symbol_size=10,
effect_scale=6.5,
effect_brushtype="fill",
symbol="diamond",
)
es.add(
"",
[50],
[50],
symbol_size=16,
effect_scale=5.5,
effect_period=3,
symbol="arrow",
)
es.add(
"",
[60],
[60],
symbol_size=6,
effect_scale=2.5,
effect_period=3,
symbol="triangle",
)
es.render()
Scatter3D(3D 散点图)
Scatter3D.add()
方法签名
add(name, data,
grid3d_opacity=1, **kwargs)
name -> str
图例名称
data -> [list], 包含列表的列表
数据项,数据中,每一行是一个『数据项』,每一列属于一个『维度』
grid3d_opacity -> int
3D 笛卡尔坐标系组的透明度(点的透明度),默认为 1,完全不透明。
from pyecharts import Scatter3D
import random
data = [
[random.randint(0, 100),
random.randint(0, 100),
random.randint(0, 100)] for _ in range(80)
]
range_color = [
'#313695', '#4575b4', '#74add1', '#abd9e9', '#e0f3f8', '#ffffbf',
'#fee090', '#fdae61', '#f46d43', '#d73027', '#a50026']
scatter3D = Scatter3D("3D 散点图示例", width=1200, height=600)
scatter3D.add("", data, is_visualmap=True, visual_range_color=range_color)
scatter3D.render()
Note: 可配合 axis3D 通用配置项 一起使用
Surface3D(3D 曲面图)
Surface3D.add()
方法签名
add(name, data,
grid3d_opacity=1, **kwargs)
name -> str
图例名称
data -> [list]/ndarray, 包含列表的列表
数据项,数据中,每一行是一个『数据项』,每一列属于一个『维度』
grid3d_opacity -> int
3D 笛卡尔坐标系组的透明度(点的透明度),默认为 1,完全不透明。
import math
from pyecharts import Surface3D
def create_surface3d_data():
for t0 in range(-60, 60, 1):
y = t0 / 60
for t1 in range(-60, 60, 1):
x = t1 / 60
if math.fabs(x) < 0.1 and math.fabs(y) < 0.1:
z = '-'
else:
z = math.sin(x * math.pi) * math.sin(y * math.pi)
yield [x, y, z]
range_color = [
"#313695",
"#4575b4",
"#74add1",
"#abd9e9",
"#e0f3f8",
"#ffffbf",
"#fee090",
"#fdae61",
"#f46d43",
"#d73027",
"#a50026",
]
_data = list(create_surface3d_data())
surface3d = Surface3D("3D 曲面图示例", width=1200, height=600)
surface3d.add(
"",
_data,
is_visualmap=True,
visual_range_color=range_color,
visual_range=[-3, 3],
grid3d_rotate_sensitivity=5,
)
surface3d.render()