pyecharts-动态可视化(5)关系图/社会网络/涟漪特效

关系图(1 of 3)

在这里插入图片描述

GraphNode:关系图的节点数据项

name="结点1"数据项名称
symbol_size: Union[Numeric, Sequence, None] = None: 该类目节点标记的大小,可以设置成诸如 10 这样单一的数字,也可以用数组分开表示宽和高,例如 [20, 10] 表示标记宽为 20,高为 10。

GraphLink:节点间的关系数据

source: Union[str, int, None] = None:边的源节点名称的字符串,也支持使用数字表示源节点的索引;
target="结点2:边的目标节点名称的字符串,也支持使用数字表示源节点的索引;
value=3:边的数值,可以在力引导布局中用于映射到边的长度;
linestyle_opts=opts.LineStyleOpts(width=6):关系边的线条样式。

from pyecharts import options as opts
from pyecharts.charts import Graph
nodes = [
    opts.GraphNode(name="结点1", symbol_size=10),
    opts.GraphNode(name="结点2", symbol_size=20),
    opts.GraphNode(name="结点3", symbol_size=30),
    opts.GraphNode(name="结点4", symbol_size=40),
    opts.GraphNode(name="结点5", symbol_size=50),
]
links = [
    opts.GraphLink(source="结点1", target="结点2", value=2, linestyle_opts=opts.LineStyleOpts(width=2),),
    opts.GraphLink(source="结点2", target="结点3", value=3, linestyle_opts=opts.LineStyleOpts(width=3),),
    opts.GraphLink(source="结点3", target="结点4", value=4, linestyle_opts=opts.LineStyleOpts(width=4),),
    opts.GraphLink(source="结点4", target="结点5", value=5, linestyle_opts=opts.LineStyleOpts(width=5)),
    opts.GraphLink(source="结点5", target="结点3", value=6, linestyle_opts=opts.LineStyleOpts(width=6)),
]
c = (
    Graph()
    .add("", nodes, links, repulsion=4000,
         edge_label=opts.LabelOpts(is_show=True,position="middle",formatter="{c}")
         )
    .set_global_opts(title_opts=opts.TitleOpts(title="Graph-GraphNode-GraphLink"))
    .render("graph_with_options.html")
)

关系图(2 of 3)

在这里插入图片描述

在这里插入图片描述

repulsion=50:节点之间的斥力因子,支持设置成数组表达斥力的范围,此时不同大小的值会线性映射到不同的斥力。值越大则斥力越大

import json
from pyecharts import options as opts
from pyecharts.charts import Graph

with open("weibo.json", "r", encoding="utf-8") as f:
    j = json.load(f)
    nodes, links, categories, cont, mid, userl = j
c = (
    Graph()
    .add(
        "",
        nodes,
        links,
        categories,
        repulsion=50,
        linestyle_opts=opts.LineStyleOpts(curve=0.2),
        label_opts=opts.LabelOpts(is_show=False),
    )
    .set_global_opts(
        legend_opts=opts.LegendOpts(is_show=False),
        title_opts=opts.TitleOpts(title="Graph-微博转发关系图"),
    )
    .render("graph_weibo.html")
)

关系图(3 of 3)

在这里插入图片描述

is_rotate_label: bool = False 是否旋转标签,默认不旋转。
layout="circular"

import json
from pyecharts import options as opts
from pyecharts.charts import Graph
with open("les-miserables.json", "r", encoding="utf-8") as f:
    j = json.load(f)
    nodes = j["nodes"]
    links = j["links"]
    categories = j["categories"]

c = (
    Graph(init_opts=opts.InitOpts(width="1000px", height="600px"))
    .add(
        "",
        nodes=nodes,
        links=links,
        categories=categories,
        layout="circular",
        is_rotate_label=True,
        linestyle_opts=opts.LineStyleOpts(color="source", curve=0.3),
        label_opts=opts.LabelOpts(position="right"),
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Graph-Les Miserables"),
        legend_opts=opts.LegendOpts(orient="vertical", pos_left="2%", pos_top="20%"),
    )
    .render("graph_les_miserables.html")
)

涟漪特效

在这里插入图片描述
适用场景:利用动画特效将某些想要突出的数据进行视觉突出,比如地图上某个地区
①导入不同的涟漪特效的一个包:from pyecharts.globals import SymbolType
②默认样式:涟漪散点
③函数EffectScatter()

from pyecharts import options as opts
from pyecharts.charts import EffectScatter
from pyecharts.faker import Faker
from pyecharts.globals import SymbolType #不同symbol的包
c = (
    EffectScatter()
    .add_xaxis(Faker.choose())
    .add_yaxis("基本示例", Faker.values()) #默认无样式
    .add_yaxis("不同Symbol", Faker.values(), symbol=SymbolType.ARROW)
    .set_global_opts(title_opts=opts.TitleOpts(title="EffectScatter-基本示例"))
    .render("effectscatter_base.html")
)

下一关 >> 折线图/多页面转换/面积图/网格https://blog.csdn.net/vv_eve/article/details/107874753
上一关 >> 日历表 / k线图 /饼图组合 /散点图组合https://blog.csdn.net/vv_eve/article/details/107574132

  • 7
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
pyecharts 是一个基于 Python可视化库,它能够帮助我们在 Python 代码中轻松绘制各种类型的表,包括折线、散点、饼、地等等。而动态可视化则是 pyecharts 中最为引人注目的功能之一,它能够让我们将数据以动画的方式呈现出来,让数据更加生动、直观。 下面,我将以一个简单的例子来演示如何使用 pyecharts 实现动态可视化。 首先,我们需要安装 pyecharts: ``` pip install pyecharts ``` 然后,我们就可以开始编写代码了。假设我们要绘制一个动态的散点,展示随机生成的数据在不同时间点的变化。 首先,我们需要导入必要的模块和类: ```python import random from pyecharts import options as opts from pyecharts.charts import Scatter from pyecharts.commons.utils import JsCode ``` 然后,我们需要生成一些随机数据。这里我们简单地生成了 100 个坐标点,其坐标范围在 0 到 100 之间: ```python data = [(random.randint(0, 100), random.randint(0, 100)) for _ in range(100)] ``` 接下来,我们需要定义一个函数,该函数会根据不同的时间点返回不同的数据。在这里,我们让数据在每次更新时都随机生成一些新的坐标点,以模拟数据的动态变化: ```python def get_data(t: int): random.seed(t) data = [(random.randint(0, 100), random.randint(0, 100)) for _ in range(100)] return data ``` 接着,我们可以开始构造散点了。我们需要使用 pyecharts 中的 Scatter 类,并设置一些基本的属性,如表标题、坐标轴范围等: ```python scatter = ( Scatter() .set_global_opts( title_opts=opts.TitleOpts(title="动态散点"), xaxis_opts=opts.AxisOpts(min_=0, max_=100), yaxis_opts=opts.AxisOpts(min_=0, max_=100), ) ) ``` 接下来,我们需要定义一个 JavaScript 代码,该代码会在每次动画更新时被调用,用于更新散点的数据: ```python js_code = """ function (params) { var data = params.context.data; var t = params.time; data = echarts.dataTool.prepareBoxplotData(data); data = get_data(t); return { data: data }; } """ ``` 最后,我们将散点与数据和 JavaScript 代码进行绑定,并设置一些动画效果: ```python scatter.add_js_funcs(JsCode(js_code)) scatter.add("", data) scatter.set_series_opts(label_opts=opts.LabelOpts(is_show=False)) scatter.set_global_opts( visualmap_opts=opts.VisualMapOpts(type_="color", max_=100, min_=0), legend_opts=opts.LegendOpts(is_show=False), toolbox_opts=opts.ToolboxOpts(), animation_opts=opts.AnimationOpts(animation_delay=100, animation_easing="cubicOut"), ) ``` 最后,我们调用 render() 方法将散点渲染出来: ```python scatter.render("dynamic_scatter.html") ``` 这个例子只是一个简单的入门教程,pyecharts 的功能远不止于此。在实际应用中,我们可以根据需求来选择不同类型的表,并通过各种配置项来实现更加复杂的可视化效果。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值