Matplotlib - 两种不同范围的不同颜色图

时间:2015-12-05 08:22:05

标签: python matplotlib colorbar jupyter-notebook

我正在尝试将之前分开的两个数字结合起来。 一个是3个面板图(ax1,ax2,ax3)(全部用imshow生成),我在侧面使用一个单色图。现在,我想添加另一个我从png文件加载的数字(ax0),使用imreadget_sample_data(来自matplotlib.cbook)。

问题是这个新图形采用与3个面板中的颜色图相同的颜色图,因此在新添加的面板中产生一个简单的均匀颜色。其他3个面板仍然具有正确的颜色。

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
import numpy as np

g1 = gridspec.GridSpec(4, 1, height_ratios=[4,1,1,1])
g1.update(wspace=0.05, hspace=0.2) # set the spacing between axes.

f, ((ax0), (ax1), (ax2), (ax3)) = plt.subplots(4, 1, sharex='col', sharey='row')

ax0 = subplot(g1[0])
ax1 = subplot(g1[1])
ax2 = subplot(g1[2])
ax3 = subplot(g1[3])

from matplotlib.cbook import get_sample_data
im2 = plt.imread(get_sample_data('PathToFig/Figure.png'))
ax0.imshow(im2, vmax=1)

ziAA = np.random.rand(4, 4, 4)
ziAB = np.random.rand(4, 4, 4)
ziBA = np.random.rand(4, 4, 4)

ax1.imshow(ziAA,origin="lower",vmin=0,vmax=0.03,aspect="auto",extent=[-0.15,0.15,0,4])
ax2.imshow(ziAB,origin="lower",vmin=0,vmax=0.03,aspect="auto",extent=[-0.15,0.15,0,4])
im = ax3.imshow(ziBA,origin="lower",vmin=0,vmax=0.03,aspect="auto",extent=[-0.15,0.15,0,4])

from matplotlib import ticker
tick_locator = ticker.MaxNLocator(nbins=5)

f.subplots_adjust(right=0.85)

cbar_ax = f.add_axes([1.0, 0.15, 0.01, 0.7])
cbar = f.colorbar(im, cax=cbar_ax)

cbar.locator = tick_locator
cbar.update_ticks()
cbar.solids.set_rasterized(True)
cbar.solids.set_edgecolor("face")

ziABziBAziAA是在之前的griddata插值调用中生成的。

我尝试在每个imshow调用中指定两个不同的颜色映射,我尝试更改vmax的值。但无济于事......

如果我在ax0 - ax1之后放置3,那么,获取正确颜色的是ax0,而不是ax1 - 3

我看过其他类似的问题(Two different color colormaps in the same imshow matplotlib),讨论创建蒙面数组或我自己的颜色图,但由于ax0的png文件来源,我真的没看到我该怎么做。

编辑:

玩具数据:

ziAA = np.random.rand(4, 4, 4)
ziAB = np.random.rand(4, 4, 4)
ziBA = np.random.rand(4, 4, 4)

玩具png图:

Toy image

使用此图,均匀的颜色变成白色。我的实际数字给出了均匀的红色这表明通过适当调整vmin,vmax和其他控制参数,可以使png图正确显示。但是,我会对任何适用于任何png数字的东西感兴趣...

1 个答案:

答案 0 :(得分:1)

使用:

im0 = ax0.imshow(im2, aspect='auto',extent=[-0.15,0.15,0,4])

产生以下结果:

enter image description here