By default matplotlib
would position colorbar labels alongside the vertical colorbars. What is the best way to force the label to be on top of a colorbar? Currently my solution needs adjusting labelpad
and y
values depending on size of the label:
import numpy as np import matplotlib.pylab as plt dat = np.random.randn(10,10) plt.imshow(dat, interpolation='none') clb = plt.colorbar() clb.set_label('label', labelpad=-40, y=1.05, rotation=0) plt.show()
Is there a better, more generic way to do this?
Steps. Create random data using numpy. Use imshow() method to represent data into an image, with colormap "PuBuGn" and interpolation= "nearest". Set the title on the ax (of colorbar) using set_title() method.
( cmaps.viridis is a matplotlib.colors.ListedColormap ) import matplotlib.pyplot as plt import matplotlib.image as mpimg import numpy as np import colormaps as cmaps img=mpimg.imread('stinkbug.png') lum_img = np.flipud(img[:,:,0]) imgplot = plt.pcolormesh(lum_img, cmap=cmaps.viridis)
To make colorbar orientation horizontal in Python, we can use orientation="horizontal" in the argument.
To move the colorbar to a different tile, set the Layout property of the colorbar. To display the colorbar in a location that does not appear in the table, use the Position property to specify a custom location. If you set the Position property, then MATLAB sets the Location property to 'manual' .
You could set the title
of the colorbar axis (which appears above the axis), rather than the label
(which appears along the long axis). To access the colorbar's Axes
, you can use clb.ax
. You can then use set_title
, in the same way you can for any other Axes
instance.
For example:
import numpy as np import matplotlib.pylab as plt dat = np.random.randn(10,10) plt.imshow(dat, interpolation='none') clb = plt.colorbar() clb.ax.set_title('This is a title') plt.show()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With