Python 中颜色栏的自定义(截断并添加更多颜色)
Customization of the colorbar in Python (truncate and add more colors)
我是 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,并为每个值创建一个新颜色。
P.S。像 cbar = plt.clim(0, 9) 这样的命令不起作用。
提前致谢!
使用 levels=
您可以告诉 contourf
您想要新级别的值。在这种情况下,选择 levels=0,1,2,...,9
似乎可以实现您想要的。
请注意,颜色是在调用 contourf
时决定的。函数 colorbar
只是试图可视化使用的颜色。
下面的代码首先创建一些介于 0 和 20 之间的随机数据,异常值值为 50。将对 contourf
的默认调用与显式设置 levels
的调用进行比较。
import matplotlib.pyplot as plt
from matplotlib.patches import Ellipse
import numpy as np
N, M = 100, 300
x = 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] = 50
fig, (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()
我是 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,并为每个值创建一个新颜色。
P.S。像 cbar = plt.clim(0, 9) 这样的命令不起作用。
提前致谢!
使用 levels=
您可以告诉 contourf
您想要新级别的值。在这种情况下,选择 levels=0,1,2,...,9
似乎可以实现您想要的。
请注意,颜色是在调用 contourf
时决定的。函数 colorbar
只是试图可视化使用的颜色。
下面的代码首先创建一些介于 0 和 20 之间的随机数据,异常值值为 50。将对 contourf
的默认调用与显式设置 levels
的调用进行比较。
import matplotlib.pyplot as plt
from matplotlib.patches import Ellipse
import numpy as np
N, M = 100, 300
x = 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] = 50
fig, (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()