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()