Matplotlib 轮廓:设置颜色条的范围(不是颜色图的范围)
Matplotlib contour: set range of colorbar (not range of colormap)
我对具有用户定义级别的等高线图的颜色栏有疑问。正如您在下图中看到的,最高级别(红色)的颜色在颜色条中显示不佳。为了解决这个问题,我想更改颜色条的范围(例如从 0 到 1),同时不更改等高线级别或颜色图的范围。
到目前为止,我已经尝试在颜色条调用中手动设置颜色条的刻度,但这并没有改变范围。 (也就是说,0.3-0.8 之外的刻度不会显示)
最小工作示例:
import numpy as np
import matplotlib.pyplot as plt
z = np.random.rand(10,10)
im = plt.contour(z, levels = [0.3,0.5,0.8], cmap="rainbow")
plt.colorbar(im)
I would like to change the range of the colorbar (e.g. from 0 to 1)
保存颜色条对象,改变它的边界和刻度线的位置,最后更新绘图以反映我们的愿望。
import numpy as np
import matplotlib.pyplot as plt
z = np.random.rand(10,10)
im = plt.contour(z, levels = [0.3,0.5,0.8], cmap="rainbow")
cb = plt.colorbar(im)
cb.boundaries = np.array((0.0, 0.5, 1.0))
cb.set_ticks((0, 0.3, 0.5, 0.8, 1))
cb.update_normal(im)
我对具有用户定义级别的等高线图的颜色栏有疑问。正如您在下图中看到的,最高级别(红色)的颜色在颜色条中显示不佳。为了解决这个问题,我想更改颜色条的范围(例如从 0 到 1),同时不更改等高线级别或颜色图的范围。
到目前为止,我已经尝试在颜色条调用中手动设置颜色条的刻度,但这并没有改变范围。 (也就是说,0.3-0.8 之外的刻度不会显示)
最小工作示例:
import numpy as np
import matplotlib.pyplot as plt
z = np.random.rand(10,10)
im = plt.contour(z, levels = [0.3,0.5,0.8], cmap="rainbow")
plt.colorbar(im)
I would like to change the range of the colorbar (e.g. from 0 to 1)
保存颜色条对象,改变它的边界和刻度线的位置,最后更新绘图以反映我们的愿望。
import numpy as np
import matplotlib.pyplot as plt
z = np.random.rand(10,10)
im = plt.contour(z, levels = [0.3,0.5,0.8], cmap="rainbow")
cb = plt.colorbar(im)
cb.boundaries = np.array((0.0, 0.5, 1.0))
cb.set_ticks((0, 0.3, 0.5, 0.8, 1))
cb.update_normal(im)