设置matplotlib颜色条范围(范围大于绘制的值)

car*_*rla 3 python matplotlib colorbar

我想绘制一些数据(0到18之间),但我希望颜色条显示0到40之间的范围.经过几个在线示例,我不知道如何实现我需要的!

这是一个简单的例子:

import matplotlib.pyplot as plt
import numpy as np

rd = np.random.rand(40,100) # random samples from a uniform distribution over [0, 1]
surface = 18 * rd           # maximum value will be 18

fig = plt.figure()
ax = fig.add_subplot(111)
cores = ax.contourf(surface[:], vmin=0, vmax=40)

cbar = plt.colorbar(cores)
Run Code Online (Sandbox Code Playgroud)

我也试过这个:

cbar = plt.colorbar(cores, extend='both', extendrect=True)
cbar.set_clim(0, 40.)
Run Code Online (Sandbox Code Playgroud)

但我一直得到相同的图像,颜色条从0到20!我知道我可以使用这种set_over方法,但我不想得到一种颜色...我希望我的整个颜色范围(定义cores为0到40)出现!

在此输入图像描述

谢谢你的帮助!

car*_*rla 7

我终于设法解决了.而不是vminvmax,我必须传递一个关键字来控制绘制的级别,如下所示:

import matplotlib.pyplot as plt
import numpy as np

rd = np.random.rand(40,100)
surface = 18 * rd           # maximum value will be 18

fig = plt.figure()
ax = fig.add_subplot(111)

cores = ax.contourf(surface[:], levels=range(41))
cbar = plt.colorbar(cores)

plt.show()
Run Code Online (Sandbox Code Playgroud)

我得到了我想要的图像: 在此输入图像描述

  • 非常感谢!这让我非常疯狂;我喜欢 matplotlib 的强大功能,但未记录功能的数量和由此产生的意外行为绝对令人愤怒。 (3认同)