如何在matplotlib指定坐标位置绘制所需的等高线?
解决思路与实现方法
- 第一步:先获取目标点
(0.1,0.1)对应的VgN数值
你当前使用的网格步长为0.001,可直接定位索引取值,无需额外插值:
# 定位x=0.1、y=0.1对应的网格索引 x_idx = np.argmin(np.abs(Ncmax - 0.1)) y_idx = np.argmin(np.abs(khmax - 0.1)) target_val = VgN[y_idx, x_idx] print(f"目标点对应数值为:{target_val}")
如果需要更精准的数值,可以用scipy.interpolate.interp2d对VgN做二维插值后再取(0.1,0.1)点的数值。
- 第二步:自定义等高线层级,优先加入目标点的数值
不要直接给contour传整数代表全局等分的层级数,自己生成层级列表,在全局层级的基础上额外插入目标点附近的密集层级,保证目标点的等高线一定会被绘制:
# 先生成全局基础层级,比如原来的50个 base_levels = np.linspace(VgN.min(), VgN.max(), 50) # 生成目标点附近的加密层级,步长可以根据你的数值范围调整 near_levels = np.arange(target_val - 0.001, target_val + 0.001, 0.0001) # 合并两个层级数组并去重排序 all_levels = np.sort(np.unique(np.concatenate([base_levels, near_levels]))) # 绘图时传入自定义的层级 contour = plt.contour(X,Y,VgN, levels=all_levels)
- 可选优化:局部放大目标区域
如果全局范围太大导致目标区域的等高线挤在一起看不清,可以直接限制x、y轴的显示范围:
ax.set_xlim(0.08, 0.12) ax.set_ylim(0.08, 0.12)
内容的提问来源于stack exchange,提问作者Avii
相关产品推荐
相关产品推荐

