Matplotlib:颜色条刻度和颜色独立于父图中的值

问题描述 投票:0回答:2

让我们假设下面有两个2D数组,我想为其绘制contourf图。我将使用两个子图来绘制两个contourf

import numpy as np
import matplotlib.pyplot as plt
a = np.array([
    [1, 2, 2],
    [0, 1, 2],
    [0, 0, 1],
])

b = np.array([
    [4, 5, 5],
    [3, 4, 5],
    [3, 3, 4],
])

规格:

  • 我想在每个子图中有一个颜色条[已解决]。
  • 我希望我的两个颜色条的刻度都在0到5之间[未解决]。
  • 我希望轮廓和颜色栏中的所需颜色能够反映从0到5的真实范围[已解决]。

当前,我有以下代码可以解决三个需求中的两个。

z1lim = [0, 5]
levels = 5
ticks = np.linspace(*z1lim, levels)
fig, ax = plt.subplots(ncols=2, figsize=(16, 6)) 

# contourf 0
cntf0 = ax[0].contourf(
    a,
    cmap='viridis', 
    levels=levels, 
    vmin=z1lim[0],
    vmax=z1lim[1],
)
# colorbar 0
cbar0 = fig.colorbar(
    cntf0,
    ticks=ticks,
    ax=ax[0]
)


# contourf 1
cntf1 = ax[1].contourf(
    b,
    cmap='viridis', 
    levels=levels, 
    vmin=z1lim[0],
    vmax=z1lim[1],
)
# colorbar 1
cbar1 = fig.colorbar(
    cntf1,
    ticks=ticks,
    ax=ax[1]
)

Current Plots

[查看当前结果,我无法获得范围从0到5的颜色条。如果有人可以给我一个能使颜色条的刻度从0到5的有效代码,那就太好了。

python matplotlib colorbar
2个回答
0
投票

您想使用相同的归一化来绘制两组数据,并使用a specific recipe实例化两个颜色图


0
投票

您在每个图中都采用了5个等级,但未指定它们的位置。因此,一个情节无法了解另一情节。在两种情况下,请确保使用相同的级别:

© www.soinside.com 2019 - 2024. All rights reserved.