【python】地理探测器生态因子绘图
·
原始数据

绘图结果

代码
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() # 关闭画布,释放内存

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


所有评论(0)