为Pyecharts的graph自定义category并设置样式

为Pyecharts的graph自定义category并设置样式

实现目标

在这里插入图片描述
Pyecharts的文档在这里描述不清晰,并没有具体描述实现的方案。在这里我给出一个样例

实现过程

# karate聚类
import networkx as nx
from community import community_louvain

G   = nx.karate_club_graph()
com = community_louvain.best_partition(G)

在这个聚类结果中,原数据集被分成了4块,我们希望在图表中呈现。

# 可视化
from pyecharts import options as opts
from pyecharts.charts import Graph

# 创建节点列表和边列表
nodes = [{'name': str(node), 'symbolSize': 20, 'value': len(G[node])} for node in G.nodes()]
edges = [{'source': str(edge[0]), 'target': str(edge[1])} for edge in G.edges()]
# 设置节点分类
categories = [
    opts.GraphCategory(name="0"),
    opts.GraphCategory(name="1"),
    opts.GraphCategory(name="2"),
    opts.GraphCategory(name="3"),
]

for node in nodes:
    if int(node['name']) in com:
        node['category'] = com[int(node['name'])]
    
# 创建图形对象
graph = (
    Graph()
    .add("", nodes, edges, categories=categories,repulsion=8000)
    .set_global_opts(title_opts=opts.TitleOpts(title="空手道俱乐部社区图"))
    .set_colors(["#FF0000", "#00FF00", "#0000FF", "#FFFF00"]) # 为每个category设置颜色
)

# 保存图形到 HTML 文件
graph.render("karate_club_graph.html")

实现效果

在这里插入图片描述

参考链接

Pyecharts官方文档
万物皆网络,万字长文详解社区发现算法Louvain

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
`label_opts`是`pyecharts`中用于设置节点标签的配置参数,`tooltip_formatter`是用于设置图表的提示框格式化函数。 `label_opts`主要用于设置节点标签的样式和显示内容,它是一个字典类型的参数,可以设置以下几个属性: 1. `position`:设置标签相对节点的位置,默认为'inside',可以设置为'inside'、'top'、'bottom'、'left'、'right'、'insideLeft'、'insideRight'、'insideTop'、'insideBottom'、'insideTopLeft'、'insideTopRight'、'insideBottomLeft'、'insideBottomRight'等值。 2. `offset`:设置标签在x轴和y轴上的偏移量,默认为[0,0]。 3. `font_style`:设置标签的字体样式,默认为'normal'。 4. `font_weight`:设置标签的字体粗细,默认为'normal'。 5. `font_size`:设置标签的字体大小,默认为'12'。 6. `color`:设置标签的字体颜色,默认为'#666'。 7. `rotate`:设置标签的旋转角度,默认为0,表示不旋转。 `tooltip_formatter`是用于设置图表的提示框格式化函数,它是一个函数对象,可以自定义函数的内容。在函数中,可以使用格式化字符串,如`{b}`表示节点名称,`{c}`表示节点值,`{d}`表示节点在数据中的索引等。 例如,可以通过设置`label_opts`来更改节点标签的显示位置和样式: ```python from pyecharts import options as opts from pyecharts.charts import Graph # 创建节点标签配置 label_opts = { "position": "top", "offset": [0, 0], "font_style": "normal", "font_weight": "normal", "font_size": 12, "color": "#666", "rotate": 0 } # 创建图表 graph = Graph() graph.add("", nodes, links, label_opts=label_opts) # 显示图表 graph.render() ``` 可以通过设置`tooltip_formatter`来自定义提示框的显示内容: ```python from pyecharts import options as opts from pyecharts.charts import Graph # 创建提示框格式化函数 def formatter(params): return "节点名称:" + params['name'] + "<br>" + \ "节点值:" + str(params['value']) + "<br>" + \ "节点索引:" + str(params['dataIndex']) # 创建图表 graph = Graph() graph.add("", nodes, links, tooltip_formatter=formatter) # 显示图表 graph.render() ``` 上述代码中的`nodes`和`links`分别表示节点和边的数据,具体数据格式请参考`pyecharts`的文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gledfish

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值