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

Matplotlib绘制8位精度等高线并指定区间着色的实现方法咨询

解决方法

要同时实现高精度等高线绘制和指定区域填充,可按以下步骤修改代码:

  • 第一步:自定义等高线层级,避免默认自动生成的层级精度不足。直接在你需要的取值区间[0.99999999, 1.00000001]内生成指定数量的等间距层级,精度可以严格控制到1e-8级别。
  • 第二步:使用contourf方法完成等高区域填充,可单独指定需要填充的层级范围,只针对目标区间着色。
  • 第三步:调整等高线标签的格式化字符串,改为8位小数显示,匹配精度要求。

修改后可直接运行的完整代码如下:

import numpy as np
import matplotlib.pyplot as plt

# 原始网格生成逻辑
khmax = np.arange(0, np.pi, 0.01)
Ncmax = np.arange(0, np.pi, 0.01)
X, Y = np.meshgrid(Ncmax, khmax)
fig, ax = plt.subplots()

# -------------------------- 核心修改部分 --------------------------
# 定义目标取值范围,可根据需求调整
target_min = 0.99999999
target_max = 1.00000001
# 生成30个等间距的等高线层级,精度严格匹配8位小数要求
contour_levels = np.linspace(target_min, target_max, 30)

# 先绘制填充等高区域,cmap可自定义配色,alpha调整透明度
contourf = ax.contourf(X, Y, mod_G, levels=contour_levels, cmap='Blues', alpha=0.6)
# 绘制高精度等高线,这里设置为黑色细线避免遮挡填充色
contour = ax.contour(X, Y, mod_G, levels=contour_levels, colors='k', linewidths=0.5)

# 标签格式改为8位小数,匹配精度需求
ax.clabel(contour, inline=True, inline_spacing=-1, fmt='%1.8f', fontsize=8)
# -------------------------------------------------------------------

ax.set_title('magnitude of G')
ax.set_xlabel('Ncmax')
ax.set_ylabel('khmax')
# 可选:添加颜色条显示填充区域对应的数值范围
plt.colorbar(contourf)
plt.show()

如果需要仅对特定子区间着色,可直接修改target_min和target_max为对应区间数值即可。如果需要区分填充区间和全部等高线的显示范围,可以给contour和contourf传入不同的levels参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 23:24:03