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

如何设置matplotlib colorbar刻度精确对齐最小与最大值位置

问题描述

使用matplotlib.contourf绘制等高线图时,已通过参数指定数值范围最小值为0、最大值为20,但生成的色条最高刻度仅显示19.8,未在色条最顶端对应位置显示设定的最大值20。

复现代码

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 10, 10)
y = np.linspace(0, 10, 10)
xx,yy = np.meshgrid(x,y)
X = np.array([xx,yy]).reshape(2,-1)

func_plot = X[0] + X[1]
func_plot = np.atleast_2d(func_plot).reshape(10, 10)

fig, ax = plt.subplots(figsize=(13,7))
ax = plt.subplot(121)
cntr = plt.contourf(x,y,func_plot,100,vmin = 0, vmax = 20, alpha = 1)
cbar = fig.colorbar(cntr,orientation="vertical")

实际运行效果

最小值为0、最大值为20的等高线图绘制结果

解决方法

出现该问题的原因是:传入contourf的层级数为100时,matplotlib自动生成的等高线间隔为0.2,自动选择色条刻度时未将最大值20纳入刻度列表。
只需在生成色条后,手动指定色条刻度,强制包含0和20两个端点即可,核心修改代码如下:

# 生成色条后新增该行,步长可根据自身显示需求调整,只要覆盖0到20的区间、包含两个端点即可
cbar.set_ticks(np.arange(0, 21, 2))

修改后色条顶端会准确显示20的刻度,与你设置的vmax参数完全对应。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 10:12:20