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

使用Matplotlib的tricontourf()绘制等高线时的标注异常问题

解决Matplotlib等高线标注混乱的问题

问题根源在于你直接用tricontourf(填充等高线)的返回值调用clabel。tricontourf负责填充颜色区域,它生成的内部轮廓不适合直接做标注,正确做法是分开绘制填充层和可标注的纯等高线层:

修改后的代码

import matplotlib.pyplot as plt
import DataImportingContour as d
import matplotlib.cm as cm

def graphing_contour():
    # 调整画布尺寸,让子图更舒展
    fig, (ax1, ax2) = plt.subplots(2, figsize=(8, 8))
    level_wallA = list(range(5, 44, 5))
    print(level_wallA)

    # 配置Wall A子图参数
    ax1.set_xticks(range(-5, 6))
    ax1.set_yticks([0.5, 1])
    ax1.set(xlabel='y/H', ylabel='z/H')
    ax1.set_title('Wall A')

    # 配置Wall B子图参数
    ax2.set_xticks(range(-5, 6))
    ax2.set_yticks([0.5, 1])
    ax2.set(xlabel='y/H', ylabel='z/H')
    ax2.set_title('Wall B')
    
    # 第一步:绘制填充等高线(仅负责颜色填充)
    ax1.tricontourf(d.dict['x0_list'], d.dict['y0_list'], d.dict['z0_list'], 
                   cmap=cm.YlOrBr, levels=level_wallA)
    ax2.tricontourf(d.dict['x1_list'], d.dict['y1_list'], d.dict['z1_list'], 
                   cmap=cm.YlOrBr, levels=4)
    
    # 第二步:绘制纯等高线(用于标注),设置深色细线让轮廓清晰
    cs1 = ax1.tricontour(d.dict['x0_list'], d.dict['y0_list'], d.dict['z0_list'],
                        levels=level_wallA, colors='black', linewidths=0.5)
    cs2 = ax2.tricontour(d.dict['x1_list'], d.dict['y1_list'], d.dict['z1_list'],
                        levels=4, colors='black', linewidths=0.5)
    
    # 对纯等高线添加标注,调整字体大小和颜色提升可读性
    ax1.clabel(cs1, levels=level_wallA, inline=True, fontsize=8, colors='black')
    ax2.clabel(cs2, inline=True, fontsize=8, colors='black')

    # 添加颜色条,让数值与颜色对应更直观
    fig.colorbar(cs1, ax=ax1)
    fig.colorbar(cs2, ax=ax2)
    
    fig.tight_layout()  # 自动调整子图间距,避免标签重叠
    fig.savefig('test.jpg', dpi=300)  # 提高分辨率让图像更清晰

if __name__ == "__main__": 
    graphing_contour()

关键改动说明

  • 拆分图层:将颜色填充和等高线标注分离,tricontourf专注填充,tricontour生成可标注的清晰轮廓
  • 统一层级:确保tricontour和clabel的levels参数一致,避免标注错位
  • 优化可读性:通过fontsize、colors调整标注样式,inline=True让标注嵌入等高线
  • 画布优化:扩大画布尺寸、自动调整间距、提高保存分辨率,解决图像拥挤模糊问题

内容的提问来源于stack exchange,提问作者Vu Thanh Phan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:45:23