FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

BUG: matplotlib 3.4.0 -- Scatter with colormap and legend gives TypeError: object of type 'NoneType' has no len() · Issue #19779 · matplotlib/matplotlib · GitHub

Repository navigation

BUG: matplotlib 3.4.0 -- Scatter with colormap and legend gives TypeError: object of type 'NoneType' has no len() #19779

Description

Bug report

Bug summary

With matplotlib 3.4.0, scatter plot with colormap and legend gives TypeError: object of type 'NoneType' has no len().

Code for reproduction

import matplotlib.pyplot as plt
y = [1, 2, 3, 4, 5]
plt.scatter(y, y, label='Y', lw=0, s=8, c=y, cmap='viridis')
plt.legend()
plt.show()

Actual outcome

Traceback (most recent call last):
  File ".../matplotlib/backends/backend_qt5.py", line 475, in _draw_idle
    self.draw()
  File ".../matplotlib/backends/backend_agg.py", line 406, in draw
    self.figure.draw(self.renderer)
  File ".../matplotlib/artist.py", line 74, in draw_wrapper
    result = draw(artist, renderer, *args, **kwargs)
  File ".../matplotlib/artist.py", line 51, in draw_wrapper
    return draw(artist, renderer, *args, **kwargs)
  File ".../matplotlib/figure.py", line 2734, in draw
    mimage._draw_list_compositing_images(
  File ".../matplotlib/image.py", line 132, in _draw_list_compositing_images
    a.draw(renderer)
  File ".../matplotlib/artist.py", line 51, in draw_wrapper
    return draw(artist, renderer, *args, **kwargs)
  File ".../matplotlib/_api/deprecation.py", line 431, in wrapper
    return func(*inner_args, **inner_kwargs)
  File ".../matplotlib/axes/_base.py", line 2925, in draw
    mimage._draw_list_compositing_images(renderer, self, artists)
  File ".../matplotlib/image.py", line 132, in _draw_list_compositing_images
    a.draw(renderer)
  File ".../matplotlib/artist.py", line 51, in draw_wrapper
    return draw(artist, renderer, *args, **kwargs)
  File ".../matplotlib/legend.py", line 614, in draw
    self._legend_box.draw(renderer)
  File ".../matplotlib/offsetbox.py", line 368, in draw
    c.draw(renderer)
  File ".../matplotlib/offsetbox.py", line 368, in draw
    c.draw(renderer)
  File ".../matplotlib/offsetbox.py", line 368, in draw
    c.draw(renderer)
  [Previous line repeated 1 more time]
  File ".../matplotlib/offsetbox.py", line 694, in draw
    c.draw(renderer)
  File ".../matplotlib/artist.py", line 51, in draw_wrapper
    return draw(artist, renderer, *args, **kwargs)
  File ".../matplotlib/collections.py", line 1009, in draw
    super().draw(renderer)
  File ".../matplotlib/artist.py", line 51, in draw_wrapper
    return draw(artist, renderer, *args, **kwargs)
  File ".../matplotlib/collections.py", line 380, in draw
    len(facecolors) == 1 and len(edgecolors) == 1 and
TypeError: object of type 'NoneType' has no len()

Expected outcome

With matplotlib 3.3.4, I get this (no warning or error):

Matplotlib version

  • Operating system: Red Hat Enterprise Linux Server release 7.9 (Maipo)
  • Matplotlib version (import matplotlib; print(matplotlib.__version__)): 3.4.0
  • Matplotlib backend (print(matplotlib.get_backend())): Qt5Agg
  • Python version: 3.8.3
  • Jupyter version (if applicable): N/A
  • Other libraries: Not sure what else you need, just let me know.

Activity

  1. smartlixx commented on Mar 27, 2021

    Contributor

    A bisect diagnose shows that the problem was introduced in the commit
    4c3d644 (#18480), which changed the way Collections deal with color.

    A quick fix is easy, but I don't have much in-depth understanding of this part of the code. If anyone familiar with this part can have a discussion, that would be great. Or I just open a PR for discussion.

  2. dstansby commented on Mar 28, 2021

    Member

    Opening a PR is probably the best way forward 👍

  3. added this to the v3.4.1 milestone on Mar 28, 2021
  4. added
    Release criticalFor bugs that make the library unusable (segfaults, incorrect plots, etc) and major regressions.
    on Mar 28, 2021
  5. smartlixx commented on Mar 29, 2021

    Contributor

    A bisect diagnose shows that the problem was introduced in the commit
    4c3d644 (#18480), which changed the way Collections deal with color.

    A quick fix is easy, but I don't have much in-depth understanding of this part of the code. If anyone is familiar with this part can have a discussion, that would be great. Or I just open a PR for discussion.

    Actually, this problem has been solved in the commit ed6d92b (#19552), but this commit was not included in v3.4.x branch. Backport that commit will solve this problem.

  6. QuLogic commented on Mar 29, 2021

    Member

    That commit removes API and cannot be included in v3.4.x directly.

  7. QuLogic commented on Mar 29, 2021

    Member

    Maybe we should just drop the self._check_update('array') though, @efiring?

  8. added a commit that references this issue on Mar 29, 2021
    7c1b2c0
  9. added a commit that references this issue on Mar 30, 2021
    ee8dc54
  10. QuLogic commented on Mar 31, 2021

    Member

    Closed by #19816.

  11. pllim commented on Mar 31, 2021

    Author

    Thanks for the quick fix!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Release criticalFor bugs that make the library unusable (segfaults, incorrect plots, etc) and major regressions.

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions


      Back | FazBrowse Home | New Git URL