[Bug]: Updating the facecolors of a collection before its first draw has no effect · Issue #24479 · matplotlib/matplotlib · GitHub
Skip to content

[Bug]: Updating the facecolors of a collection before its first draw has no effect #24479

Description

@anntzer

Bug summary

Create e.g. a pathcollection (a scatter plot) not mapping any array, but with directly set colors; then update one of the facecolors before the first draw of the collection. This change has no effect and gets cancelled.

Code for reproduction

import matplotlib.pyplot as plt

sc1 = plt.scatter([0, 1, 2], [0, 1, 2], c=["r", "g", "b"])
sc2 = plt.scatter([0, 1, 2], [2, 3, 4], c=["r", "g", "b"])
# Update sc1 before the first draw.
sc1.get_facecolors()[2] = (0, 0, 0, 1)  # i.e. black.
plt.gcf().canvas.draw()
# Update sc2 after the first draw.
sc2.get_facecolors()[2] = (0, 0, 0, 1)  # i.e. black

plt.show()

Actual outcome

test
Note that the third point of sc1 is incorrectly blue, whereas the third point of sc2 is correctly black.

Expected outcome

Both third points are black.

Additional information

First noted by @chahak13 in #24474 (comment).
I haven't done a full bisect but did check that this broke at some point between 3.3.4 and 3.4.0, and I suspect #18480 introduced the issue (in the changes related to update_scalarmappable); attn @efiring.

Operating system

fedora37

Matplotlib Version

3.7.0.dev538+g9b4985e185

Matplotlib Backend

qtagg

Python version

3.10

Jupyter version

ENOSUCHLIB

Installation

git checkout

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions