This would appear to be a duplicate of this question:
Set Colorbar Range in matplotlib
Essentially I want to set the colorbar
range to set limits, e.g. 0 to 2. When I use vmin
and vmax
, the range of colors in contourf
is correctly set, but colorbar only shows the clipped range, i.e. the solution in the link doesn't seem to work when using contourf
. Am I missing something obvious?
import numpy as np
import matplotlib.pyplot as plt
fld=np.random.rand(10,10)
img=plt.contourf(fld,20,cmap='coolwarm',vmin=0,vmax=2)
plt.colorbar(img)
Resulting in
How can I force the colorbar range to be 0 to 2 with contourf
?
contour() and contourf() draw contour lines and filled contours, respectively. Except as noted, function signatures and return values are the same for both versions. contourf() differs from the MATLAB version in that it does not draw the polygon edges. To draw edges, add line contours with calls to contour() .
The contourf() function in pyplot module of matplotlib library is used to plot contours. But contourf draw filled contours, while contourf draws contour lines. Parameters: This method accept the following parameters that are described below: X, Y: These parameter are the coordinates of the values in Z.
A color bar can be added to the filled contour plot using either the pyplot. colorbar() function or the figure. colorbar() method.
contourf
indeed works a bit differently than other ScalarMappable
s. If you specify the number of levels (20 in this case) it will take them between the minimum and maximum data (approximately). If you want to have n
levels between two specific values vmin
and vmax
you would need to supply those to the contouring function
levels = np.linspace(vmin, vmax, n+1)
plt.contourf(fld,levels=levels,cmap='coolwarm')
Complete code:
import numpy as np
import matplotlib.pyplot as plt
fld=np.random.rand(10,10)
levels = np.linspace(0,2,21)
img=plt.contourf(fld,levels=levels,cmap='coolwarm')
plt.colorbar(img)
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