【Python】matplotlib 在 scatter 图中只为非 NaN 值的点添加边缘 (edgecolor)

使用matplotlib模块ax.scatter()时,如果添加了edgecolor参数,会导致所有的点都被添加边缘,但我们是想只为有数值(非NaN值)的点的边缘,此时可以使用np.isnan()函数来创建一个布尔掩码,然后根据该掩码来绘制非NaN值的点:

import numpy as np
import matplotlib.pyplot as plt
import cartopy.crs as ccrs

# 假设mapmean_sites是您的二维数据数组
# 创建一个布尔掩码,其中True表示非NaN值,False表示NaN值  
mask = ~np.isnan(mapmean_sites)

# 提取非NaN值的X和Y坐标
X = X[mask]
Y = Y[mask]

# 提取非NaN值的数据
data = mapmean_sites[mask]

# 创建一个颜色映射对象,用于根据data的值着色
cmaps = plt.get_cmap('WhiteBlueGreenYellowRed')

# 创建一个绘图对象
fig, ax = plt.subplots(subplot_kw={'projection': ccrs.PlateCarree()})

# 使用scatter函数绘制非NaN值的点
scatter = ax.scatter(X, Y, c=data, vmin=0, vmax=120, cmap=cmaps, edgecolor='black')

# 添加颜色条
cbar = plt.colorbar(scatter)
cbar.set_label('Your Colorbar Label')

# 显示绘图
plt.show()

以上示例中,首先创建一个布尔掩码 ( mask),其中True表示非NaN值,False表示NaN值。然后,从XY数组中提取与True值相对应的坐标,从mapmean_sites数组中提取与True值相对应的数据,然后使用scatter函数绘制这些非NaN值的点。最后,添加颜色条和其他绘图元素,以完成绘图。

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值