Colormap entire subplot

喜欢而已 提交于 2019-12-11 03:15:45

问题


I'm having some trouble with color maps. Basically, what I would like to produce is similar to the image below.

On the bottom subplot I would like to be able to plot the relevant colour, but spanning the entire background of the subplot.i.e it would just look like a colourmap over the entire plot, with no lines or points plotted. It should still correspond to the colours shown in the scatter plot.

Is it possible to do this? what I would ideally like to do is put this background under the top subplot. ( the y scales are in diferent units)

Thanks for and help.

code for bottom scatter subplot:

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

where wind is a 1D array


回答1:


You can use imshow to display your wind array. It needs to be reshaped to a 2D array, but the 'height' dimensions can be length 1. Setting the extent to the dimensions of the top axes makes it align with it.

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 [-]')

If you want to use it as a 'background' you should first plot whatever you want. Then grab the extent of the bottom plot and set it as an extent to imshow. You can also provide any colormap you want to imshow by using cmap=.



来源:https://stackoverflow.com/questions/19926383/colormap-entire-subplot

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!