%pylab im_arr = np.zeros((256, 256, 3), dtype=np.float32) im_arr[:, :, 0] = np.linspace(0, 1, 256) im_arr[:, :, 1] = np.linspace(0, 1, 256)[:, np.newaxis] fig = plt.figure(figsize=(8, 8)) main_ax = plt.axes([0.1, 0.15, 0.8, 0.8], xticks=[], yticks=[]) im = main_ax.imshow(im_arr, origin='lower', extent=[0, 1, 0, 1]) from matplotlib.widgets import Slider, AxesWidget slider_ax = plt.axes([0.1, 0.1, 0.8, 0.02]) slider = Slider(slider_ax, 'Blue', 0.0, 1.0, valinit=0.0, color='#AAAAFF') def update(val): im_arr[:, :, 2] = val im.set_data(im_arr) fig.canvas.draw() slider.on_changed(update) cbox_ax = plt.axes([0.1, 0.04, 0.04, 0.04], xticks=[], yticks=[]) cbox_im = cbox_ax.imshow(np.ones((1, 1, 3))) cbox_txt = cbox_ax.text(1.5, 0.5, "(text)", transform=cbox_ax.transAxes, fontsize=20, va='center', ha='left') from matplotlib.colors import rgb2hex def on_pick(event): r = event.mouseevent.xdata g = event.mouseevent.ydata b = slider.val cbox_im.set_data([[[r, g, b]]]) cbox_txt.set_text(rgb2hex((r, g, b)).upper()) fig.canvas.draw() im.set_picker(True) fig.canvas.mpl_connect('pick_event', on_pick)