Problem
Follow up on #21309.
The problem is contour on discontinuous functions. Mpl makes the (sane) assumption that, if a quad's corners have the values 0.0 and 0.78, the level contour of 0.51 (for example) has to pass somewhere through the quad, and draws it. This is incorrect where the function is actually discontinuous, but of course mpl has no way of knowing that.
See this stackoverflow post or here.
Proposed solution
A simple solution for this would be to allow for a user-supplied float parameter, max_jump or discontinuity_threshold or something like that, defaulting to np.inf. If within a quad the function values differ by more than this threshold, a discontinuity is assumed and the level contour is assumed not to pass through the quad.
Additional context and prior art
No response
Problem
Follow up on #21309.
The problem is
contouron discontinuous functions. Mpl makes the (sane) assumption that, if a quad's corners have the values 0.0 and 0.78, the level contour of 0.51 (for example) has to pass somewhere through the quad, and draws it. This is incorrect where the function is actually discontinuous, but of course mpl has no way of knowing that.See this stackoverflow post or here.
Proposed solution
A simple solution for this would be to allow for a user-supplied float parameter,
max_jumpordiscontinuity_thresholdor something like that, defaulting tonp.inf. If within a quad the function values differ by more than this threshold, a discontinuity is assumed and the level contour is assumed not to pass through the quad.Additional context and prior art
No response