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

5
我想绘制一些数据(在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)

我也尝试过这个:

cbar = plt.colorbar(cores, extend='both', extendrect=True)
cbar.set_clim(0, 40.)

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

enter image description here

感谢您的帮助!

1个回答

8

我终于解决了它。 我需要传递一个关键字来控制绘制的级别,而不是使用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()

我得到了我想要的图片: 在这里输入图片描述

4
非常感谢!那件事让我快疯了;我喜欢 matplotlib 的强大功能,但是未记录的特性和导致的意外行为可以让人非常生气。 - Luke Davis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接