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

Tricontour图无法生成密度区域,求优化为清晰密度等高线图

解决tricontour绘图线条杂乱的优化方案
  • 排查数据问题
    先处理数据层面的潜在问题:

    • 统计左侧区域(df.FPER较小的区间)的数据点密度,若点分布极不均匀(过疏或过密带噪声),会直接干扰三角剖分结果。
    • 剔除z值的极端异常值,示例代码:
      # 保留98%范围内的有效数据
      df = df[(df.kge_amont > df.kge_amont.quantile(0.01)) & (df.kge_amont < df.kge_amont.quantile(0.99))]
      
  • 转规则网格插值绘制contour
    若要得到规整的等高线,优先将散点插值到规则网格后用contour绘图,这是接近参考图效果的高效方法:

    import numpy as np
    from scipy.interpolate import griddata
    
    # 生成高密度规则网格
    x_grid = np.linspace(df.FPER.min(), df.FPER.max(), 200)
    y_grid = np.linspace(df.KRII.min(), df.KRII.max(), 200)
    X, Y = np.meshgrid(x_grid, y_grid)
    
    # 选择合适的插值方法(cubic更平滑,linear更贴合原始数据)
    Z_grid = griddata((df.FPER, df.KRII), df.kge_amont, (X, Y), method='cubic')
    
    # 绘制清晰等高线
    ax4.contour(X, Y, Z_grid, levels=5, linewidths=0.5, linestyles='solid')
    
  • 优化tricontour的三角剖分
    若坚持使用tricontour,可手动过滤畸形三角形:

    from matplotlib.tri import Triangulation
    
    # 初始化三角剖分
    tri = Triangulation(df.FPER, df.KRII)
    # 移除面积过大的异常三角形(阈值需根据数据范围调整)
    area_threshold = 0.01  # 示例阈值,需自行适配
    mask = tri.triangles_area() > area_threshold
    tri.set_mask(mask)
    
    # 用优化后的剖分绘图
    ax4.tricontour(tri, df.kge_amont, levels=5, linewidths=0.5, linestyles='solid')
    
  • 调整等高线分层数量
    当前levels=5的分层可能过少,可尝试增加至10或更多,让等高线过渡更自然,提升视觉清晰度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 01:39:40