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

标签 python matplotlib customization contour colorbar

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

sample graph with colorbar

这是代码:

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) 这样的命令不起作用。

提前致谢!

最佳答案

使用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()

example plot

关于python - Python 中颜色条的自定义(截断并添加更多颜色),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63194453/

相关文章:

matplotlib - 在 matplotlib 图形上启用白框/禁用透明框

python - 如何在 Spyder 4 中运行选定的线路?

java - 有没有办法让 JVM 加载自定义的 java.io.File 而不是标准的

java - 无法使 JAX-WS 绑定(bind)自定义工作

python - 找出: In how many word a character is present in a given Sentence: PYTHON

python - 在启动时运行 Python 脚本(Raspberry Pi 上的 Arch Linux ARM)

python - 无法查看美国各州热图

python - 找不到 pyinstaller 命令

python - flask-tornado CTRL+C 在 Windows 中终止

python - 获取颜色条刻度