本节介绍:从数据到论文图Python绘制Mantel相关性网络图,数据采用模拟数据无任何现实意义,作者根据个人对机器学习的理解进行代码实现与图表输出,仅供参考。完整数据和代码稍后上传至网站。需要的朋友可关注公众文末提供的获取方式。欢迎点赞、推荐、转发!文献配图用于同时表达两层关系:一是左侧“水生态空间转入”和“水生态空间转出”与各驱动因子之间的Mantel相关关系,二是右侧各驱动因子之间的Pearson相关关系。读图时,先看左侧连线:线条越粗表示Mantel’s r越大,即该因子与水生态空间转型的关联越强;线条颜色表示显著性水平,红色、绿色、青色代表显著相关,紫色则表示不显著。再看右侧相关矩阵:方格颜色表示Pearson’s r,红色代表正相关,蓝色代表负相关,颜色越深说明相关越强;星号表示显著性,星号越多说明相关越显著。因此,该图可以帮助判断哪些自然地理、交通区位或社会经济因子可能是水生态空间转入/转出的关键影响因素,同时也能识别驱动因子之间是否存在较强相关或共线性关系为了更直观地展示Mantel分析的计算逻辑与可视化表达,基于模拟数据构建了两组示例图。图A展示了两个响应对象与多类驱动因子之间的Mantel相关关系,图B进一步扩展为三个响应对象的情形。左侧连线用于表示响应对象与各驱动因子距离矩阵之间的 Mantel 相关性,线条粗细反映相关强度,颜色表示显著性水平;右侧上三角矩阵则展示驱动因子之间的Pearson相关关系,颜色深浅表示相关方向与强度,星号表示显著性。通过这种组合图,可以同时识别响应过程的潜在驱动因素,并观察驱动因子之间是否存在明显共线性。下面结合Python代码,演示如何从模拟数据生成、Mantel检验计算到最终图形绘制的完整流程import mathimport numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport matplotlib.patches as patchesfrom matplotlib.colors import LinearSegmentedColormapfrom IPython.display import displayplt.rcParams["font.sans-serif"] = ["SimHei", "Microsoft YaHei", "Arial Unicode MS"]plt.rcParams["axes.unicode_minus"] = FalseRNG = np.random.default_rng(20260705)drivers = pd.read_excel("mantel_simulated_data.xlsx", sheet_name="drivers")water_in = pd.read_excel("mantel_simulated_data.xlsx", sheet_name="water_in")water_out = pd.read_excel("mantel_simulated_data.xlsx", sheet_name="water_out")responses = { "Gain of aquatic ecological space": water_in, "Loss of aquatic ecological space": water_out,}pearson_corr, pearson_p, mantel_df = calculate_results( drivers=drivers, responses=responses, n_perm=999)
从Excel文件中读取驱动因子和两个水生态空间响应数据,构建响应对象字典,并通过calculate_results()计算驱动因子之间的Pearson相关矩阵以及响应对象与各驱动因子之间的Mantel相关结果,为后续可视化绘图做准备fig, ax = plot_mantel_corr_network( pearson_corr, pearson_p, mantel_df, style_overrides={ "line": { "thin": 0.4, "thick": 1.2, "alpha": 0.75, }, "node": { "driver_size": 20, "response_size": 32, }, "legend": { "colorbar_axes": [0.78, 0.22, 0.018, 0.22], } }, response_nodes={ "Gain of aquatic ecological space": (-1.5, 10.5), "Loss of aquatic ecological space": (-0.5, 16.5), }, response_labels={ "Gain of aquatic ecological space": "Gain of\naquatic ecological space", "Loss of aquatic ecological space": "Loss of\naquatic ecological space", }, save_path="mantel_plot.pdf")
调用plot_mantel_corr_network(),将前面计算得到的Pearson相关矩阵和Mantel结果绘制成“相关矩阵+Mantel连线”的综合可视化图,自定义线条、节点、图例位置、响应点位置与标签,最后保存为mantel_plot.pdf需要说明的是,Python目前缺少像R语言中linkET、vegan等那样可直接完成Mantel分析及其组合可视化的成熟绘图库,因此本文中的Mantel检验计算、显著性分组和“相关矩阵+连线网络”图形绘制均采用自定义Python代码实现# 读取驱动因子drivers_read = pd.read_excel( "mantel_three_response_simulated_data.xlsx", sheet_name="drivers")# 读取三个响应对象responses_read = { "Restoration": pd.read_excel( "mantel_three_response_simulated_data.xlsx", sheet_name="Restoration" ), "Fragmentation": pd.read_excel( "mantel_three_response_simulated_data.xlsx", sheet_name="Fragmentation" ), "Degradation": pd.read_excel( "mantel_three_response_simulated_data.xlsx", sheet_name="Degradation"pearson_corr, pearson_p, mantel_df = calculate_results( drivers=drivers_read, responses=responses_read, n_perm=999)fig, ax = plot_mantel_corr_network( pearson_corr, pearson_p, mantel_df, style_overrides={ # Pearson's r 色带:负相关 / 0 / 正相关 "corr_cmap": ("#2166AC", "#F7F7F7", "#B2182B"), # Mantel's P 连线颜色 "mantel_p_colors": { "p_lt_0.001": "#E66101", # orange "p_0.001_0.01": "#5E3C99", # purple "p_0.01_0.05": "#1B9E77", # green "p_ge_0.05": "#9E9E9E", # grey }, "line": { "thin": 0.4, "thick": 1.2, "alpha": 0.72, }, # 节点颜色 "node": { "driver_size": 20, "response_size": 36, "facecolor": "#D73027", "edgecolor": "#313695", "linewidth": 0.6, }, "legend": { "colorbar_axes": [0.78, 0.22, 0.018, 0.22], } }, response_nodes={ "Restoration": (-2.4, 6.8), "Fragmentation": (-1.5, 11.8), "Degradation": (-0.6, 16.8), }, response_labels={ "Restoration": "Restoration", "Fragmentation": "Fragmentation", "Degradation": "Degradation", }, save_path="mantel_plot_three_response_directions.pdf")
从Excel中读取三类响应对象及其驱动因子数据,计算Pearson相关和Mantel检验结果,并调用自定义绘图函数生成三响应对象的Mantel相关可视化图;其中线条、节点、配色、图例位置和响应点坐标等细节均可根据不同数据类型灵活调整,更多参数设置可参考作者提供的完整源码当然,公众号中还有更多机器学习期刊实战技巧,您可以通过历史文章进行检索和阅读,关注公众号,点击“发信息”>“历史文章”即可搜索公众号所有文章信息在上传的文件中,像往期文章一样,将对案例进行逐步分析,确保读者能够达到最佳的学习效果。内容都经过详细解读,帮助读者深入理解模型的实现过程和数据分析步骤,从而最大化学习成果。
同时,结合提供的免费AI网站进行学习,能够让读者在理论与实践之间实现融会贯通,更加全面地掌握核心概念。
本节内容到此结束。若需要获取本案例的源码及相关资料,可通过公众号后台私信按钮“源码获取”了解相关信息。资料中包含代码、注释、数据说明及参考文献,便于读者进一步学习和复现。合集目前包含近400篇资料。更多内容等你探索~~更新的内容包含数据、代码、注释和参考资料。作者仅分享案例项目,不提供额外的答疑服务。项目中将提供详细的代码注释和丰富的解读,帮助您理解每个步骤。获取前请咨询,避免不必要的问题。请大家打开淘宝,进入“Python机器学习AI”,获取更多Python机器学习和AI相关的内容,希望能为您的学习之路提供帮助!如果你对类似于这样的文章感兴趣。
欢迎关注、点赞、转发~