Closed
Description
Bug report
Bug summary
The documentation of contour() specifies that contour(X,Y,Z,N) makes a contour with “up to N automatically-chosen levels”. In practice the number of contours can be larger than requested.
Code for reproduction
r = linspace(-3., 3., 1000)
x, y = np.meshgrid(r, r)
z = (1. - x/2. + x**5. + y**3.) * np.exp(-x**2. - y**2.)
for i in range(1, 11):
print("Up to {} levels requested. {} levels provided.".format(i, len(plt.contour(x, y, z, i).levels)))
Actual outcome
Up to 1 levels requested. 2 levels provided.
Up to 2 levels requested. 3 levels provided.
Up to 3 levels requested. 4 levels provided.
Up to 4 levels requested. 4 levels provided.
Up to 5 levels requested. 6 levels provided.
Up to 6 levels requested. 7 levels provided.
Up to 7 levels requested. 7 levels provided.
Up to 8 levels requested. 9 levels provided.
Up to 9 levels requested. 9 levels provided.
Up to 10 levels requested. 9 levels provided.
Expected outcome
The number of levels provided should never be larger than the number of levels requesting, if the documentation is to be believed. The exact number would be ideal
Matplotlib version
- Operating System: Arch linux
- Matplotlib Version: 2.0.2
- Python Version: 3.6.2
Official arch packages.
Note: probably related to issue #4537.