Colormap整个子图

时间:2013-11-12 10:14:02

标签: python matplotlib color-mapping

我在使用彩色地图时遇到了一些麻烦。基本上,我想要制作的内容与下图相似。

在底部子图上,我希望能够绘制相关颜色,但是跨越子图的整个背景。它看起来就像是整个图上的颜色图,没有绘制线条或点。它应该仍然对应于散点图中显示的颜色。

有可能这样做吗?我理想的做法是将此背景置于顶部子图下。 (y标度是不同的单位)

enter image description here

感谢和帮助。

底部散点子图的

代码

x = np.arange(len(wind))
y = wind
t = y
plt.scatter(x, y, c=t)

风是一维数组

1 个答案:

答案 0 :(得分:5)

您可以使用imshow显示风阵列。它需要重新整形为2D数组,但“高度”尺寸可以是长度1.将顶部轴的尺寸设置为与其对齐。

wind = np.random.randn(100) + np.random.randn(100).cumsum() * 0.5
x = np.arange(len(wind))
y = wind
t = y

fig, ax = plt.subplots(2,1,figsize=(10,6))

ax[0].plot(x,y)

ax[1].plot(x, 100- y * 10, lw=2, c='black')

ymin, ymax = ax[1].get_ybound()
xmin, xmax = ax[1].get_xbound()

im = ax[1].imshow(y.reshape(1, y.size), extent=[xmin,xmax,ymin,ymax], interpolation='none', alpha=.5, cmap=plt.cm.RdYlGn_r)
ax[1].set_aspect(ax[0].get_aspect())

cax = fig.add_axes([.95,0.3,0.01,0.4])
cb = plt.colorbar(im, cax=cax)
cb.set_label('Y parameter [-]')

enter image description here

如果你想将它用作'背景',你应该首先绘制你想要的任何东西。然后抓住底部图的范围并将其设置为imshow的范围。您还可以使用imshow

提供您想要cmap=的任何色彩映射