You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python空间趋势图上添加p<0.05显著性黑点/圆点标记

实现显著性标记叠加的解决方案

核心思路

你已经得到了和slope维度一致的p_value数组,只需筛选出p<0.05的像素对应的经纬度坐标,通过scatter函数将圆点标记叠加到已有的slope空间图层上即可。

完整代码示例

import numpy as np
import matplotlib.pyplot as plt

# 初始化画布
fig, ax = plt.subplots(figsize=(10, 6))

# 原有的slope空间分布图绘制逻辑
slope_plot = ax.pcolormesh(lon, lat, slope, cmap='RdBu_r')
plt.colorbar(slope_plot, ax=ax, label='变化趋势斜率')

# 生成二维经纬度网格(若你的lat、lon本身就是二维网格可跳过该步)
lon_grid, lat_grid = np.meshgrid(lon, lat)

# 筛选p<0.05的显著性区域
significance_mask = p_value < 0.05
sig_lons = lon_grid[significance_mask]
sig_lats = lat_grid[significance_mask]

# 叠加显著性圆点标记
ax.scatter(
    sig_lons, sig_lats,
    s=8,  # 圆点大小,可根据像素密度调整
    c='black',  # 圆点填充色,和背景对比度不够可改为白色'white'
    marker='o',
    edgecolors='none'  # 不需要边框可以设为none
)

# 可选:添加坐标轴与标题设置
ax.set_xlabel('经度')
ax.set_ylabel('纬度')
ax.set_title('空间变化趋势及显著性分布(p<0.05)')

plt.show()

常用调整建议

  • 若标记点过密:可减小s参数,或改用更小的标记marker='.'
  • 若需要区分正负趋势的显著性:可将c参数设为对应位置的slope值,和主图使用相同的色标:
    ax.scatter(sig_lons, sig_lats, s=8, c=slope[significance_mask], cmap='RdBu_r', vmin=slope_plot.get_clim()[0], vmax=slope_plot.get_clim()[1])
    
  • 若需要增加标记辨识度:可添加细边框,设置edgecolors='white'、linewidths=0.2即可

内容的提问来源于stack exchange,提问作者hbkumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 11:36:02