python - 设置两个 matplotlib imshow 图具有相同的颜色图比例

标签 python matplotlib plot colorbar imshow

我正在尝试绘制具有相同比例的字段。上面的图像值比下面的图像值高 10 倍,但它们在 imshow 中的颜色相同。如何将两者设置为具有相同的颜色比例?

我在图像下方添加了我正在使用的代码..

Two imshow plots

def show_field(field1,field2):
    fig = plt.figure()
    ax = fig.add_subplot(2, 1, 1)
    ax.imshow(field1,cmap=plt.cm.YlGn)
    ax.set_adjustable('box-forced')
    ax.autoscale(False)
    ax2 = fig.add_subplot(2, 1, 2)
    ax2.set_adjustable('box-forced')
    ax2.imshow(field2,cmap=plt.cm.YlGn)
    ax2.autoscale(False)
    plt.show()

最佳答案

首先,您需要定义要使用的颜色范围的最小值和最大值。在此示例中,它是您正在绘制的两个数组的最小值和最大值。然后使用这些值来设置 imshow 颜色代码的范围。

import numpy as np     
def show_field(field1,field2):

    combined_data = np.array([field1,field2])
    #Get the min and max of all your data
    _min, _max = np.amin(combined_data), np.amax(combined_data)

    fig = plt.figure()
    ax = fig.add_subplot(2, 1, 1)
    #Add the vmin and vmax arguments to set the color scale
    ax.imshow(field1,cmap=plt.cm.YlGn, vmin = _min, vmax = _max)
    ax.set_adjustable('box-forced')
    ax.autoscale(False)
    ax2 = fig.add_subplot(2, 1, 2)
    ax2.set_adjustable('box-forced')
    #Add the vmin and vmax arguments to set the color scale
    ax2.imshow(field2,cmap=plt.cm.YlGn, vmin = _min, vmax = _max)
    ax2.autoscale(False)
    plt.show()

关于python - 设置两个 matplotlib imshow 图具有相同的颜色图比例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58562043/

相关文章:

python - 简单的 Matplotlib 动画不起作用

python - 如何比较 Char 字符串

python - 如何在 Cygwin 上安装 Matplotlib?

python - 在 AudioLazy 库中从 python 中的 zfilter 对象中提取数值

python - 在四维 matplotlib 曲面中更改 Facecolors

r - 绘制神经网络图

plot - 在 gnuplot 中对齐插图

python - python - 如何在Python中将pandas DataFrame与None进行比较?

python - SAAS 的 Tornado Web 应用程序中的子域

python - 在 django 中使用 mongoengine 时写关注 DeprecationWarning