您现在的位置是:首页 > 编程 > 

流程图(一)利用python绘制弦图

2025-07-29 15:06:49
流程图(一)利用python绘制弦图 流程图(一)利用python绘制弦图弦图(Chord diagram)简介数据围绕一个圆呈放射状排列,显示不同实体之间的相互关系,这既是弦图。弦图通过每个圆弧的大小比例表示连接分配数值,可以用颜将数据分成不同类别以助于比较和区分。缺点则是当连接过多时会显得混乱。快速绘制基于bokeh首先需要安装holoviews:pip install holoviews

流程图(一)利用python绘制弦图

流程图(一)利用python绘制弦图

弦图(Chord diagram)简介

数据围绕一个圆呈放射状排列,显示不同实体之间的相互关系,这既是弦图。弦图通过每个圆弧的大小比例表示连接分配数值,可以用颜将数据分成不同类别以助于比较和区分。缺点则是当连接过多时会显得混乱。

快速绘制

基于bokeh

首先需要安装holoviews:pip install holoviews 然后安装最新的bokeh即可:pip install --upgrade bokeh

代码语言:javascript代码运行次数:0运行复制
import pandas as pd
import holoviews as hv
from holoviews import opts, dim
from bokeh.sampledata.les_mis import data

('bokeh')
(size=00)

# 导入数据
nodes = hv.Dataset(pd.DataFrame(data['nodes']), 'index')
links = pd.DataFrame(data['links'])

# 绘制弦图
chord = hv.Chord((links, nodes)).select(value=(5, one))
(
    opts.Chord(cmap='Category20', edge_cmap='Category20', edge_color=dim('source').str(), 
               labels='name', node_color=dim('index').str()))

基于pyecharts

代码语言:javascript代码运行次数:0运行复制
import requests
import json
from pyecharts import opti as opts
from  import Graph

# 获取官方的数据
url = ".json"

respe = requests.get(url)
j = json.loads()
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.),
        label_opts=opts.LabelOpts(position="right"),
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="悲惨世界角关系"),
        legend_opts=opts.LegendOpts(orient="vertical", pos_left="2%", pos_top="20%"),
    )
)

c.render_notebook()

基于mne

pip install -U mne pip install -U mne-connectivity pip install nibabel

代码语言:javascript代码运行次数:0运行复制
from mne_connectivity.viz import plot_connectivity_circle 
import numpy as np

# 自定义数据:随机连接的20个node
 = 20
node_names = [f"{i}" for i in range()]

# 随机连接
ran = np.random.rand(,)
con = np.where(ran > 0.9, ran, )  # 低于0.9的连接置为a

# 绘制弦图
fig, axes = plot_connectivity_circle(con, node_names) 
定制多样化的弦图

自定义日历弦图一般是结合使用场景对相关参数进行修改,并辅以其他的绘图知识。参数信息可以通过进行查看,其他的绘图知识则更多来源于实战经验,大家不妨将接下来的绘图作为一种学习经验,以便于日后总结。

总结

以上通过bokeh、pyecharts和mne快速绘制弦图。并通过修改参数或者辅以其他绘图知识自定义各种各样的弦图来适应相关使用场景。

共勉~

  • 修改node_angles实现弦图分割 from mne_connectivity.viz import plot_connectivity_circle import numpy as np # 自定义数据:随机连接的20个node = 20 node_names = [f"{i}" for i in range()] # 随机连接 ran = np.random.rand(,) con = np.where(ran > 0.9, ran, ) # 低于0.9的连接置为a # 自定义弧度 start, end = 45, 15 first_half = (np.linspace(start, end, len(node_names)//2) +90).astype(int)[::+1] %60 second_half = (np.linspace(start, end, len(node_names)//2) -90).astype(int)[::-1] %60 node_angles = np.array(list(first_half) + list(second_half)) # 自定义参数node_angles fig, axes = plot_connectivity_circle(con, node_names, node_angles=node_angles)
  • 自定义节点 from mne_connectivity.viz import plot_connectivity_circle import numpy as np # 自定义数据:随机连接的20个node = 20 node_names = [f"{i}" for i in range()] # 随机连接 ran = np.random.rand(,) con = np.where(ran > 0.9, ran, ) # 低于0.9的连接置为a # 自定义节点 node_edgecolor = //2 * [(0,0,0,0.)] + //2 * ['green'] node_colors = //2 * ['crimson'] + //2 * [(0,0,0,0.)] fig, axes = plot_connectivity_circle(con, node_names, # node_width=50, # 节点宽度 # vmin=0.97, vmax=0.99, # 显示连接的范围 # node_colors=node_colors, # 自定义节点颜 # node_edgecolor=node_edgecolor, # 自定义节点颜边缘 node_linewidth=2, # 自定义节点线宽 colormap='Blues', facecolor='white', textcolor='black', colorbar=False, linewidth=10 # 连接线宽度 )
本文参与 腾讯云自媒体同步曝光计划,分享自。原始发表:2024-12-16,如有侵权请联系 cloudcommunity@tencent 删除nodes连接数据pythonimport

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1236364.html

相关标签:无
上传时间: 2025-07-26 16:21:40
留言与评论(共有 15 条评论)
本站网友 炭疽杆菌
22分钟前 发表
nodes)).select(value=(5
本站网友 石决明的功效与作用
25分钟前 发表
大家不妨将接下来的绘图作为一种学习经验
本站网友 万厚医院
8分钟前 发表
大家不妨将接下来的绘图作为一种学习经验
本站网友 石家庄前列腺医院
16分钟前 发表
label_opts=opts.LabelOpts(position="right")
本站网友 郑州整形医院前十名
11分钟前 发表
pos_top="20%")
本站网友 海螵蛸是什么
23分钟前 发表
node_angles=node_angles) 自定义节点 from mne_connectivity.viz import plot_connectivity_circle import numpy as np # 自定义数据:随机连接的20个node = 20 node_names = [f"{i}" for i in range()] # 随机连接 ran = np.random.rand(
本站网友 手机验证码
11分钟前 发表
共勉~修改node_angles实现弦图分割 from mne_connectivity.viz import plot_connectivity_circle import numpy as np # 自定义数据:随机连接的20个node = 20 node_names = [f"{i}" for i in range()] # 随机连接 ran = np.random.rand(
本站网友 台中牛排馆
9分钟前 发表
ran
本站网友 北京东直门中医院
2分钟前 发表
) .set_global_opts( title_opts=opts.TitleOpts(title="悲惨世界角关系")
本站网友 月安花园
16分钟前 发表
) con = np.where(ran > 0.9
本站网友 街旁网
11分钟前 发表
0
本站网友 凑趣
22分钟前 发表
0.)] + //2 * ['green'] node_colors = //2 * ['crimson'] + //2 * [(0
本站网友 444abcd
3分钟前 发表
edge_cmap='Category20'
本站网友 启悦
22分钟前 发表
curve=0.)