Impossible to hide cursor data / imshow() / Toolbar message / format_cursor_data()

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Impossible to hide cursor data / imshow() / Toolbar message / format_cursor_data()

matplotlib - users mailing list
Hello,

Please consider the figure produced by "im = imshow(scipy.misc.face())". The
message in the Toolbar reflects the position of the cursor and displays for
example:

"x=843.9 y=384.7 [91, 102, 88]"

I changed the method "im.axes.format_coord()" in order to show specific
information in the Toolbar message, and this works fine.

However, the value of the cursor data, i.e. the string " [91, 102, 88]" in the
example above, is still printed after my home-made coordinate information.

PROBLEM: I don't want this information to be displayed.

NOT A SOLUTION: I overrode the method "im.format_cursor_data()" so that it
returns either "" or 'None'. However, in both cases, the brackets are still
displayed, showing either " []" or " [None]", which I find unsatisfactory.

It seems that the brackets are hardcoded in
"backend_bases.NavigationToolbar2.mouse_move()".

Is there a clean way to get rid of the cursor data and the brackets?

If not, I suggest the patch below. Does it make sense? The effect is simply
that if "im.format_cursor_data()" returns 'None', no cursor data will be
appended to the coordinate information.

Best regards,

Olivier

"""
--- backend_bases.py    2017-12-10 04:59:43.000000000 +0100
+++ temp/backend_bases.py 2018-03-23 22:09:10.611351451 +0100
@@ -2898,7 +2898,9 @@
                      if a is not event.inaxes.patch:
                          data = a.get_cursor_data(event)
                          if data is not None:
-                            s += ' [%s]' % a.format_cursor_data(data)
+                            data_str = a.format_cursor_data(data)
+                            if data_str is not None:
+                                s += ' [%s]' % data_str

                  if len(self.mode):
                      self.set_message('%s, %s' % (self.mode, s))
"""

_______________________________________________
Matplotlib-users mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlib-users
Reply | Threaded
Open this post in threaded view
|

Re: Impossible to hide cursor data / imshow() / Toolbar message / format_cursor_data()

Benjamin Root
I think this is reasonable. Can you make a Pull Request with this change?

On Fri, Mar 23, 2018 at 5:28 PM, Olivier via Matplotlib-users <[hidden email]> wrote:
Hello,

Please consider the figure produced by "im = imshow(scipy.misc.face())". The message in the Toolbar reflects the position of the cursor and displays for example:

"x=843.9 y=384.7 [91, 102, 88]"

I changed the method "im.axes.format_coord()" in order to show specific information in the Toolbar message, and this works fine.

However, the value of the cursor data, i.e. the string " [91, 102, 88]" in the example above, is still printed after my home-made coordinate information.

PROBLEM: I don't want this information to be displayed.

NOT A SOLUTION: I overrode the method "im.format_cursor_data()" so that it returns either "" or 'None'. However, in both cases, the brackets are still displayed, showing either " []" or " [None]", which I find unsatisfactory.

It seems that the brackets are hardcoded in "backend_bases.NavigationToolbar2.mouse_move()".

Is there a clean way to get rid of the cursor data and the brackets?

If not, I suggest the patch below. Does it make sense? The effect is simply that if "im.format_cursor_data()" returns 'None', no cursor data will be appended to the coordinate information.

Best regards,

Olivier

"""
--- backend_bases.py    2017-12-10 04:59:43.000000000 +0100
+++ temp/backend_bases.py 2018-03-23 22:09:10.611351451 +0100
@@ -2898,7 +2898,9 @@
                     if a is not event.inaxes.patch:
                         data = a.get_cursor_data(event)
                         if data is not None:
-                            s += ' [%s]' % a.format_cursor_data(data)
+                            data_str = a.format_cursor_data(data)
+                            if data_str is not None:
+                                s += ' [%s]' % data_str

                 if len(self.mode):
                     self.set_message('%s, %s' % (self.mode, s))
"""

_______________________________________________
Matplotlib-users mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlib-users


_______________________________________________
Matplotlib-users mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlib-users
Reply | Threaded
Open this post in threaded view
|

Re: Impossible to hide cursor data / imshow() / Toolbar message / format_cursor_data()

Benjamin Root
Perhaps it might make sense to generalize this stuff even further with some sort of format string approach with named components. So, people could modify the format string without needing to do a massive code modification?

On Fri, Mar 23, 2018 at 7:50 PM, Benjamin Root <[hidden email]> wrote:
I think this is reasonable. Can you make a Pull Request with this change?

On Fri, Mar 23, 2018 at 5:28 PM, Olivier via Matplotlib-users <[hidden email]> wrote:
Hello,

Please consider the figure produced by "im = imshow(scipy.misc.face())". The message in the Toolbar reflects the position of the cursor and displays for example:

"x=843.9 y=384.7 [91, 102, 88]"

I changed the method "im.axes.format_coord()" in order to show specific information in the Toolbar message, and this works fine.

However, the value of the cursor data, i.e. the string " [91, 102, 88]" in the example above, is still printed after my home-made coordinate information.

PROBLEM: I don't want this information to be displayed.

NOT A SOLUTION: I overrode the method "im.format_cursor_data()" so that it returns either "" or 'None'. However, in both cases, the brackets are still displayed, showing either " []" or " [None]", which I find unsatisfactory.

It seems that the brackets are hardcoded in "backend_bases.NavigationToolbar2.mouse_move()".

Is there a clean way to get rid of the cursor data and the brackets?

If not, I suggest the patch below. Does it make sense? The effect is simply that if "im.format_cursor_data()" returns 'None', no cursor data will be appended to the coordinate information.

Best regards,

Olivier

"""
--- backend_bases.py    2017-12-10 04:59:43.000000000 +0100
+++ temp/backend_bases.py 2018-03-23 22:09:10.611351451 +0100
@@ -2898,7 +2898,9 @@
                     if a is not event.inaxes.patch:
                         data = a.get_cursor_data(event)
                         if data is not None:
-                            s += ' [%s]' % a.format_cursor_data(data)
+                            data_str = a.format_cursor_data(data)
+                            if data_str is not None:
+                                s += ' [%s]' % data_str

                 if len(self.mode):
                     self.set_message('%s, %s' % (self.mode, s))
"""

_______________________________________________
Matplotlib-users mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlib-users



_______________________________________________
Matplotlib-users mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlib-users
Reply | Threaded
Open this post in threaded view
|

Re: Impossible to hide cursor data / imshow() / Toolbar message / format_cursor_data()

matplotlib - users mailing list
In reply to this post by Benjamin Root
> I think this is reasonable. Can you make a Pull Request with this change?

OK, I tried to (my first time):
https://github.com/matplotlib/matplotlib/pull/10878/files

--
Olivier
_______________________________________________
Matplotlib-users mailing list
[hidden email]
https://mail.python.org/mailman/listinfo/matplotlib-users