Why the V parameter in matplotlib.axes.Axes.contour must be increasing?

Hi,

https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.contour.html says
the contour function accept a vector parameter V which must be in
increasing value. But the contour function in MATLAB does not have this
restriction.

I understand the underlining implementation of these two functions could be
very different. I want to understand what is the purpose of this
restriction, and if it possible to create a contour image the same as
MATLAB does by using contour with V = [0 0]?

Regards,
David
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/matplotlib-users/attachments/20170816/eda35aeb/attachment.html>

Probably because nobody noticed that discrepancy before. I'd imagine it
would be fairly simple to apply a sort to the list of values within the
function itself. The underlying contouring implementation assumes a
monotonically increasing set of contour levels, and I would imagine that
MATLAB's version does too -- just that they sort the contour levels for you.

At the moment, I don't see any reason why we couldn't do that, too.

Cheers!
Ben Root

···

On Wed, Aug 16, 2017 at 8:33 AM, Xi Shen <davidshen84 at gmail.com> wrote:

Hi,

https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.contour.html says
the contour function accept a vector parameter V which must be in
increasing value. But the contour function in MATLAB does not have this
restriction.

I understand the underlining implementation of these two functions could
be very different. I want to understand what is the purpose of this
restriction, and if it possible to create a contour image the same as
MATLAB does by using contour with V = [0 0]?

Regards,
David

_______________________________________________
Matplotlib-users mailing list
Matplotlib-users at python.org
Matplotlib-users Info Page

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/matplotlib-users/attachments/20170816/e36c42bb/attachment.html&gt;

Hi David,

I?ve definitely run into this, to my annoyance.

Do you think you can open an issue on
[GitHub](Issues · matplotlib/matplotlib · GitHub)? If you
don?t want to, I?m happy to do it.

With respect to one contour at zero, its easier than Matlab:

ax.contour(X, np.array([0.]))

works for me?

Cheers,

···

On 16 Aug 2017, at 5:33, Xi Shen wrote:

Hi,

https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.contour.html
says
the contour function accept a vector parameter V which must be in
increasing value. But the contour function in MATLAB does not have
this
restriction.

I understand the underlining implementation of these two functions
could be
very different. I want to understand what is the purpose of this
restriction, and if it possible to create a contour image the same as
MATLAB does by using contour with V = [0 0]?

Regards,
David

_______________________________________________
Matplotlib-users mailing list
Matplotlib-users at python.org
Matplotlib-users Info Page

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/matplotlib-users/attachments/20170816/84e921d7/attachment.html&gt;

Hi Jody,

I confirm that giving V = [0] to contour function in matplotlib gives me
the same image as using V = [0 0] in MATLAB.

Do you think it is a bug in matplotlib, or it is just a conscious design
decision? I do not have much knowledge of math behind this, so for me it is
just a restriction on parameter values.

Thanks,
David

···

On Thu, Aug 17, 2017 at 12:48 AM Jody Klymak <jklymak at uvic.ca> wrote:

Hi David,

I?ve definitely run into this, to my annoyance.

Do you think you can open an issue on GitHub
<https://github.com/matplotlib/matplotlib/issues&gt;? If you don?t want to,
I?m happy to do it.

With respect to one contour at zero, its easier than Matlab:

ax.contour(X, np.array([0.]))

works for me?

Cheers,

On 16 Aug 2017, at 5:33, Xi Shen wrote:

Hi,

https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.contour.html says
the contour function accept a vector parameter V which must be in
increasing value. But the contour function in MATLAB does not have this
restriction.

I understand the underlining implementation of these two functions could
be very different. I want to understand what is the purpose of this
restriction, and if it possible to create a contour image the same as
MATLAB does by using contour with V = [0 0]?

Regards,
David

_______________________________________________
Matplotlib-users mailing list
Matplotlib-users at python.org
Matplotlib-users Info Page

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/matplotlib-users/attachments/20170817/d3132c76/attachment.html&gt;

I opened a pull request to change it, but we need to test a couple of
things?

Cheers, Jody

···

On 16 Aug 2017, at 19:06, Xi Shen wrote:

Hi Jody,

I confirm that giving V = [0] to contour function in matplotlib gives
me
the same image as using V = [0 0] in MATLAB.

Do you think it is a bug in matplotlib, or it is just a conscious
design
decision? I do not have much knowledge of math behind this, so for me
it is
just a restriction on parameter values.

Thanks,
David

On Thu, Aug 17, 2017 at 12:48 AM Jody Klymak <jklymak at uvic.ca> wrote:

Hi David,

I?ve definitely run into this, to my annoyance.

Do you think you can open an issue on GitHub
<https://github.com/matplotlib/matplotlib/issues&gt;? If you don?t
want to,
I?m happy to do it.

With respect to one contour at zero, its easier than Matlab:

ax.contour(X, np.array([0.]))

works for me?

Cheers,

On 16 Aug 2017, at 5:33, Xi Shen wrote:

Hi,

https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.contour.html
says
the contour function accept a vector parameter V which must be in
increasing value. But the contour function in MATLAB does not have
this
restriction.

I understand the underlining implementation of these two functions
could
be very different. I want to understand what is the purpose of this
restriction, and if it possible to create a contour image the same as
MATLAB does by using contour with V = [0 0]?

Regards,
David

_______________________________________________
Matplotlib-users mailing list
Matplotlib-users at python.org
Matplotlib-users Info Page

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/matplotlib-users/attachments/20170816/282e72a6/attachment-0001.html&gt;