
代码绘制成果展示













代码解释


第一部分

# =========================================================================================# ====================================== 1. 环境设置 =======================================# =========================================================================================import numpy as npimport pandas as pdimport matplotlib.pyplot as plt

第二部分

# =========================================================================================# ======================================2.颜色库=======================================# =========================================================================================COLOR_SCHEMES = {1: ['#C83E4D', '#F4B38C', '#D0E1F9', '#85C1E9', '#2E86C1', '#5A306D', '#C45B90', '#8B3E4F'],}

第三部分

# =========================================================================================# ======================================3.绘图函数=======================================# =========================================================================================def plot_advanced_forest_chart(df_real, scheme_id):selected_colors = COLOR_SCHEMES[scheme_id] #获取颜色方案color_eagle, color_chief, color_gigapath, color_ctranspath, color_virchow2, color_morphology, color_biomarkers, color_prognosis = selected_colors #分配颜色label_colors = df_real['Label_Color'].map(category_color_map).tolist() #匹配标签颜色min_vals = df_real['Min_Val'].tolist() #最小值max_vals = df_real['Max_Val'].tolist() #最大值num_vars = len(labels) #变量数

第四部分

#创建画布fig, ax = plt.subplots(figsize=(15, 15), subplot_kw=dict(polar=True))ax.set_theta_offset(np.pi / 2) #起点ax.set_theta_direction(-1) #顺时针方向ax.set_xticks(angles[:-1]) #设置x轴刻度ax.set_xticklabels([]) #去掉x轴标签#网格线ax.xaxis.grid(True, #开启color=radial_line_color, #网格线颜色linestyle='-', #样式linewidth=radial_line_width) #线宽

第五部分

#打包数据models_data = [(data_eagle, color_eagle, 'EAGLE'),(data_chief, color_chief, 'CHIEF'),(data_gigapath, color_gigapath, 'GigaPath'),(data_ctranspath, color_ctranspath, 'CTransPath'),(data_virchow2, color_virchow2, 'Virchow2')]ax.plot(angles_dense, #xdata_dense, #ycolor=color, #颜色linewidth=line_width, #线宽label=label) #标签

第六部分

#遍历添加外圈标签for i, (angle, label_text, color) in enumerate(zip(angles[:-1], labels, label_colors)):#右上角图例legend_elements = [Line2D([0], #x[0], #ycolor=c, #颜色lw=3, #线宽label=l) for _, c, l in models_data] #遍历生成所有图例leg = ax.legend(handles=legend_elements, #句柄loc='upper right', #位置bbox_to_anchor=(1.15, 1.05), #坐标fontsize=11, #字号frameon=True, #边框borderpad=0.8) #内边距ax.add_artist(leg) #添加图例

第七部分

# =========================================================================================# ======================================4.执行部分=======================================# =========================================================================================if __name__ == '__main__':df_real = pd.read_excel(r'data.xlsx') #读取数据scheme_id = 1selected_hex_colors = COLOR_SCHEMES[scheme_id]print('正在绘制并保存方案:', scheme_id)plot_advanced_forest_chart(df_real, scheme_id)

如何应用到你自己的数据

1.设置原始数据的保存路径,执行部分:
df_real = pd.read_excel(r'data.xlsx') #读取数据2.设置是否进行批量绘图,执行部分:
plot_all = True3.设置要进行绘图的数据列,绘图函数部分:
data_eagle = close_line(df_real['EAGLE'].values)data_chief = close_line(df_real['CHIEF'].values)data_gigapath = close_line(df_real['GigaPath'].values)data_ctranspath = close_line(df_real['CTransPath'].values)data_virchow2 = close_line(df_real['Virchow2'].values)
4.设置绘图结果的保存地址,绘图函数部分:
plt.savefig(fr'Scheme_{scheme_id}.png', dpi=300,bbox_inches='tight')
推荐


获取方式
