原始数据

绘图结果 

代码 

import pandas as pd  # 导入pandas用于数据处理
import matplotlib.pyplot as plt  # 导入matplotlib用于绘图
import matplotlib.patches as patches  # 导入patches用于绘制矩形色块

# 读取Excel文件路径
ecxel_path = 'result.xls'

# 读取Ecological detector表,设置第一行为列名,第一列为索引
eco_df = pd.read_excel(ecxel_path, sheet_name='Ecological detector', header=0, index_col=0)

plt.figure(figsize=(8, 6))  # 创建画布,设置图像大小

# 颜色设置:TRUE为橙色,FALSE为蓝色
color_true = '#FFA726'  # 橙色
color_false = '#42A5F5'  # 蓝色

# 遍历下三角矩阵(含对角线)
for i in range(eco_df.shape[0]):  # 行循环
    for j in range(i+1):  # 列循环,只遍历下三角
        val = eco_df.iloc[i, j]  # 获取单元格的值
        # 设置正方形边长和间距,使色块之间有分隔感
        square_size = 0.8  # 正方形边长
        gap = (1 - square_size) / 2  # 计算居中偏移量
        rect_x = j - 0.5 + gap  # 正方形左下角x坐标
        rect_y = i - 0.5 + gap  # 正方形左下角y坐标
        # 判断单元格内容,决定颜色和文本
        if str(val).upper() == '1.0':  # 如果为1.0,视为TRUE
            color = color_true
            text = 'Y'
            text_color = 'black'
        elif str(val).upper() == '0.0':  # 如果为0.0,视为FALSE
            color = color_false
            text = 'N'
            text_color = 'white'
        else:
            continue  # 其他情况跳过
        # 绘制正方形色块
        # plt.gca(): 获取当前的 Axes 对象。Axes 是 Matplotlib 中用于绘制图形的基本单元,可以理解为一个子图。
        # .add_patch(): 在当前的 Axes 对象上添加一个补丁对象。补丁对象可以是各种形状,如矩形、圆形、多边形等。
        plt.gca().add_patch(
            # patches.Rectangle(): 创建一个矩形补丁对象。
            # 这个矩形的左下角坐标为 (rect_x, rect_y),宽度和高度均为 square_size,填充颜色为 color,并且没有边框(edgecolor='none')。
            patches.Rectangle((rect_x, rect_y), square_size, square_size, facecolor=color, edgecolor='none')
        )
        # 在色块中央添加文本(Y或N)
        plt.text(j, i, text, ha='center', va='center', fontsize=16, color=text_color, fontweight='bold')

# 设置x轴和y轴显示范围
# 设置x轴的范围从-0.5到eco_df的列数减去0.5。
plt.xlim(-0.5, eco_df.shape[1]-0.5)
# 设置y轴的范围从eco_df的行数减去0.5到-0.5。
plt.ylim(eco_df.shape[0]-0.5, -0.5)
# 设置x轴和y轴刻度标签及字体大小
plt.xticks(range(eco_df.shape[1]), eco_df.columns, fontsize=12)
plt.yticks(range(eco_df.shape[0]), eco_df.index, fontsize=12)
# 设置图标题及字体大小
plt.title('Ecological Detector', fontsize=13)
plt.tight_layout()  # 自动调整子图参数,防止标签重叠
plt.savefig('EcologicalDetector.png')  # 保存图片
plt.show()  # 显示图片
plt.close()  # 关闭画布,释放内存

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐