Python Pycirclize绘制和弦图(附带实例)
和弦图(Chord Diagram)是一种用于可视化关系和流量的图表类型。它通过使用弦和节点来表示数据中的实体和它们之间的关系,帮助展示复杂网络中的交互和连接模式。
弦的宽度和颜色可以用来表示关系的强度或流量的大小,较宽或较深的弦可能表示较强的关系或较大的流量。
弦图的优点是能够直观地显示实体之间的关系和流量,并帮助观察数据中的交互模式。它常用于显示社交网络、流量分析、组织结构等。
【实例 1】使用 Pycirclize 库创建和弦图 1。输入如下代码:
【实例 2】使用 Pycirclize 库创建和弦图 2。输入如下代码:
【实例 3】使用 Pycirclize 库创建和弦图 3。输入如下代码:
弦的宽度和颜色可以用来表示关系的强度或流量的大小,较宽或较深的弦可能表示较强的关系或较大的流量。
弦图的优点是能够直观地显示实体之间的关系和流量,并帮助观察数据中的交互模式。它常用于显示社交网络、流量分析、组织结构等。
【实例 1】使用 Pycirclize 库创建和弦图 1。输入如下代码:
from pycirclize import Circos # 导入 Pycirclize 库中的 Circos 类 import pandas as pd # 导入 Pandas 库 # 创建矩阵数据框(3 行 6 列) row_names = ["s1", "s2", "s3"] # 行名称 col_names = ["E1", "E2", "E3", "E4", "E5", "E6"] # 列名称 # 矩阵数据 matrix_data = [ [4, 14, 13, 17, 5, 2 ], [7, 1, 6, 8, 12, 15], [9, 10, 3, 16, 11, 18] ] matrix_df = pd.DataFrame(matrix_data, index=row_names, columns=col_names) # 从矩阵初始化和弦图(也可以直接加载 TSV 格式的矩阵文件) circos = Circos.initialize_from_matrix( matrix_df, start=-265, # 起始角度 end=95, # 结束角度 space=5, # 每个扇形之间的间隔 r_lim=(93, 100), # 设置半径范围 cmap="tab10", # 颜色映射 label_kws=dict(r=94, size=12, color="white"), # 标签参数 link_kws=dict(ec="black", lw=0.5) # 连接线参数 ) print(matrix_df) # 打印矩阵数据框 fig = circos.plotfig() # 绘制和弦图上述代码首先创建了一个包含数字的矩阵数据框,然后使用该数据初始化了 Circos 对象。通过指定一些参数,如起始角度、结束角度、半径范围、颜色映射等,创建了和弦图。输出的结果如下图所示。

【实例 2】使用 Pycirclize 库创建和弦图 2。输入如下代码:
from pycirclize import Circos # 导入 Pycirclize 库中的 Circos 类 import pandas as pd # 导入 Pandas 库 # 创建矩阵数据(10 行 10 列) row_names = list("ABCDEFGHIJ") # 行名称 col_names = row_names # 列名称与行名称相同 matrix_data = [ [51, 115, 60, 17, 120, 126, 115, 179, 127, 114], [108, 138, 165, 170, 85, 221, 75, 107, 203, 791], [108, 54, 72, 123, 84, 117, 106, 114, 50, 271], [62, 134, 28, 185, 199, 179, 74, 94, 116, 108], [211, 114, 49, 55, 202, 97, 10, 52, 99, 111], [87, 6, 101, 117, 124, 171, 110, 14, 175, 164], [167, 99, 109, 143, 98, 42, 95, 163, 134, 781], [88, 83, 136, 71, 122, 20, 38, 264, 225, 115], [145, 82, 87, 123, 121, 55, 80, 32, 50, 121], [122, 109, 849, 94, 133, 75, 71, 115, 60, 210], ] matrix_df = pd.DataFrame(matrix_data, index=row_names, columns=col_names) # 使用 Pandas 创建数据框 # 从矩阵初始化和弦图(也可以直接加载 TSV 格式的矩阵文件) circos = Circos.initialize_from_matrix( matrix_df, space=3, # 每个扇形之间的间隔 r_lim=(93, 100), # 设置半径范围 cmap="tab10", # 颜色映射 ticks_interval=500, # 刻度间隔 label_kws=dict(r=94, size=12, color="white"), # 标签参数 link_kws=dict(ec="black", lw=0.5), # 连接线参数 ) print(matrix_df) # 打印矩阵数据框 fig = circos.plotfig() # 绘制和弦图上述代码首先创建了一个包含数字的矩阵数据框,然后使用该数据初始化了 Circos 对象。通过指定一些参数,如每个扇形之间的间隔、半径范围、颜色映射等,创建了和弦图。输出的结果如下图所示。

【实例 3】使用 Pycirclize 库创建和弦图 3。输入如下代码:
from pycirclize import Circos # 导入 Pycirclize 库中的 Circos 类 from pycirclize.parser import Matrix # 导入 Pycirclize 库中的 Matrix 解析器 import pandas as pd # 导入 Pandas 库 # 创建 from-to 表格数据框并转换为矩阵 fromto_table_df = pd.DataFrame([["A", "B", 10], ["A", "C", 5], ["A", "D", 15], ["A", "E", 201], ["A", "F", 3], ["B", "A", 3], ["B", "G", 151], ["F", "D", 13], ["F", "E", 2], ["E", "A", 201], ["E", "D", 61]], columns=["from", "to", "value"],) # 列名(可选) matrix = Matrix.parse_fromto_table(fromto_table_df) # 从 from-to 表格数据框解析矩阵 # 从矩阵初始化和弦图 circos = Circos.initialize_from_matrix(matrix, space=3, # 每个扇形之间的间隔 cmap="viridis", # 颜色映射 ticks_interval=5, # 刻度间隔 label_kws=dict(size=12, r=110), # 标签参数 link_kws=dict(direction=1, ec="black", lw=0.5),) # 连接线参数 print(fromto_table_df.to_string(index=False)) # 打印 from-to 表格数据框 fig = circos.plotfig() # 绘制和弦图上述代码首先创建了一个包含 from-to 信息的表格数据框,并使用 Matrix 解析器将其转换为矩阵。然后使用该矩阵初始化了 Circos 对象。通过指定一些参数,如每个扇形之间的间隔、颜色映射等,创建和弦图。输出的结果如下图所示。
