猿问

在 Python 中自定义颜色条(截断并添加更多颜色)

我是 Python 的新手。你能帮我对颜色条进行适当的定制吗?我已经尝试过来自网络的几种变体,但它们无法以正确的方式工作。我有以下带有颜色条的图表:

这是代码:


set_cmap('rainbow')

contourf(0.5*(data1+data2))

xlabel (r'across track $\rm\,[pixels]$')

ylabel (r'along track $\rm\,[pixels]$')


cbar = plt.colorbar()

cbar.set_label('radiance', rotation=270)

title('1.6 mue (avg: 5992-6012 cm^(-1))')

# Show the major grid lines 

plt.grid(b=True, which='major', color='#666666', linestyle='-')

# Show the minor grid lines 

plt.minorticks_on()

plt.grid(b=True, which='minor', color='#666666', linestyle='-', alpha=0.4)`fig=plt.figure()

我需要将颜色条截断为 0 到 9 之间的值,即 0、1、2、3、4、5、6、7、8、9,并为每个值创建一个新颜色。


像 cbar = plt.clim(0, 9) 这样的 PS 命令不起作用。


提前致谢!


哔哔one
浏览 323回答 1
1回答

函数式编程

使用levels=您可以判断contourf您想要新级别的值。在这种情况下,案例选择levels=0,1,2,...,9似乎可以实现您想要的。请注意,颜色是在对 的调用中决定的contourf。该函数colorbar只是试图可视化使用的颜色。下面的代码首先创建一些介于 0 和 20 之间的随机数据,异常值值为 50。默认调用contourfis compared to one werelevels是明确设置的。import matplotlib.pyplot as pltfrom matplotlib.patches import Ellipseimport numpy as npN, M = 100, 300x = np.random.uniform(-0.1, 0.1, (N, M)).cumsum(axis=1).cumsum(axis=0)x -=  x.min()x *= 20 / x.max()x[-1,-1] = 50fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(12,4))cont1 = ax1.contourf(x, cmap='rainbow')plt.colorbar(cont1, ax=ax1)cont2 = ax2.contourf(x, levels=np.arange(10), cmap='rainbow')plt.colorbar(cont2, ax=ax2)plt.show()
随时随地看视频慕课网APP

相关分类

Python
我要回答