我想将两个色图合并为一个,这样我可以使用一个cmap用于负值,另一个用于正值.
目前我使用蒙版数组并使用一个图像cmap和另一个图像绘制另一个图像,从而产生:

以下数据
dat = np.random.rand(10,10) * 2 - 1
pos = np.ma.masked_array(dat, dat<0)
neg = np.ma.masked_array(dat, dat>=0)
Run Code Online (Sandbox Code Playgroud)
我绘制pos与gist_heat_r和neg带binary.
我想有一个单一的颜色条与合并cmap的,所以这对我来说不是正确的方法.
那么,我如何将两个现有cmaps的合并为一个呢?
编辑:我承认,这是重复的,但给出的答案在这里更清楚.示例图像也使其更清晰.
我想对齐两个图的x轴,前提是一个imshow图.
我试图使用gridspec如下:
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.gridspec as grd
v1 = np.random.rand(50,150)
v2 = np.random.rand(150)
fig = plt.figure()
gs = grd.GridSpec(2,1,height_ratios=[1,10],wspace=0)
ax = plt.subplot(gs[1])
p = ax.imshow(v1,interpolation='nearest')
cb = plt.colorbar(p,shrink=0.5)
plt.xlabel('Day')
plt.ylabel('Depth')
cb.set_label('RWU')
plt.xlim(1,140)
#Plot 2
ax2 = plt.subplot(gs[0])
ax2.spines['right'].set_visible(False)
ax2.spines['top'].set_visible(False)
ax2.xaxis.set_ticks_position('bottom')
ax2.yaxis.set_ticks_position('left')
x=np.arange(1,151,1)
ax2.plot(x,v2,'k',lw=0.5)
plt.xlim(1,140)
plt.ylim(0,1.1)
#
plt.savefig("ex.pdf", bbox_inches='tight')
Run Code Online (Sandbox Code Playgroud)
我也希望这些地块彼此尽可能接近,另一个地方高度的1/10.如果我把彩条拿出来,它们似乎是对齐的,但我仍然不能把它们放在一起.我也想要颜色条.
我试图结合两个以前分开的数字。一个是 3 面板图 (ax1,ax2,ax3)(均使用 生成imshow),我在侧面使用了一个颜色图。现在,我想添加另一个从 png 文件加载的图形 (ax0),使用imreadand get_sample_data(from 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, …Run Code Online (Sandbox Code Playgroud)