
代码绘制成果展示








代码解释


第一部分

# =========================================================================================# ====================================== 1. 环境设置 =======================================# =========================================================================================import matplotlib.pyplot as pltfrom pycirclize import Circosimport pandas as pdimport matplotlibmatplotlib.rcParams['pdf.fonttype'] = 42matplotlib.rcParams['ps.fonttype'] = 42plt.rcParams['font.family'] = 'serif'plt.rcParams['font.serif'] = ['Times New Roman']plt.rcParams['axes.unicode_minus'] = False

第二部分

# =========================================================================================# ======================================2.颜色库=======================================# =========================================================================================COLOR_SCHEMES = {1: ["#4DBBD5", "#E64B35", "#00A087", "#3C5488", "#F39B7F", "#8491B0", "#91D1C2", "#DC0000", "#7E6148", "#B09C85","#374E55", "#DF8F44", "#00A1D5", "#B98C46", "#6D9731", "#2878B5", "#9AC9DB", "#C82423", "#FF8884", "#54B345","#05B9E2", "#8983BF", "#C76DA2", "#587848", "#E89132", "#08519C", "#41AB5D", "#A50F15", "#6A51A3", "#238B45","#2171B5", "#6BAED6", "#4292C6", "#238B45", "#74C476"],}scheme_index = 20 #选择配色方案

第三部分

# =========================================================================================# ======================================3.绘图函数=======================================# =========================================================================================def draw_chord_diagram(df,labels,scheme_id=1):N = len(labels) #特征总数量#每个扇区的大小sectors_dict = dict(zip(labels, df.sum(axis=1).values))circos = Circos(sectors=sectors_dict, space=0) #初始化Circos对象,传入扇区数据#获取颜色方案full_color_list = COLOR_SCHEMES.get(scheme_id, COLOR_SCHEMES[1])

第四部分

#绘制扇区和特征标签for sector in circos.sectors: #遍历每一个扇区#获取颜色fill_color = color_dict.get(sector.name, "#CCCCCC")#绘制半径93到100的主颜色环,带黑色细边框sector.rect(r_lim=(93, 100)#绘制外圈阴影圆环sector.rect(r_lim=(101, 108),facecolor="#F0F0F0",edgecolor="#D0D0D0",linewidth=0)label_text = sector.name #获取当前扇区的名称作为特征标签文本#绘制特征标签文本sector.text(label_text,r=104,orientation="vertical",size=14,color="black")

第五部分

#绘制连线for i in range(N): #遍历行#只有当数值大于0时才绘制连线if value > 0:source_label = labels[i] #获取源节点标签target_label = labels[j] #获取目标节点标签src_start = df.iloc[i, :j].sum() #源节点在扇区内的起始弧度位置color = color_dict.get(source_label, "#888888")#绘制连线circos.link((source_label, src_start, src_end), #源点坐标元组(标签,起点,终点)(target_label, tgt_start, tgt_end), #终点坐标元组color=color, #连线颜色alpha=0.6, #连线透明度direction=0 #连线方向参数)

第六部分

circos.plotfig() #生成并绘制最终的图形对象#设置标题plt.title("Circos Graph",fontsize=18,pad=80)#保存plt.savefig(fr"chord_diagram_{scheme_index}.png", dpi=300, bbox_inches="tight")plt.savefig(fr"chord_diagram_{scheme_index}.pdf", bbox_inches="tight")

第七部分

# =========================================================================================# ======================================4.执行部分=======================================# =========================================================================================if __name__ == '__main__':data = r"data.xlsx" #输入数据#读取数据df= pd.read_excel(data, index_col=0)labels = df.index.tolist() #获取数据框的索引列表,作为节点的标签draw_chord_diagram(df,labels,scheme_id=scheme_index) #调用绘图函数

如何应用到你自己的数据

1.选择你想要使用到的配色方案:
scheme_index =20 #选择配色方案2.设置绘图结果的保存地址:
plt.savefig(fr"chord_diagram_{scheme_index}.png", dpi=300, bbox_inches="tight")plt.savefig(fr"chord_diagram_{scheme_index}.pdf", bbox_inches="tight")
3.设置原始数据的输入路径:
data = r"data.xlsx" #输入数据
推荐


获取方式
