pyecharts图表库学习:Scatter(散点图)、 Scatter3D(3D 散点图)

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

Scatter 还内置了画画方法

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()
  • 4
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值