我想绘制一些数据(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)出现!
感谢您的帮助!
答案 0 :(得分:7)
我终于设法解决了这个问题。
我必须传递关键字来控制要绘制的关卡,而不是vmin
和vmax
,而不是:
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()