Skip to content

mplot3d: set_offsets()/set_array() don't work right for 3d collections #784

Open

Description

@zpincus

It's easy to make animated/interactive 2d plots with PatchCollections, where one can dynamically alter the positions, colors (if using a ScalarMappable colormap), and number of active patches using the set_offsets() and set_array() commands.

This doesn't work quite right for, e.g., Patch3DCollection objects. One can work around set_offsets() by setting the _offsets3d attribute directly, and that seems to work fine, but perhaps this could be bundled up into a set_offsets() method?

It's trickier for changing the colormap values with set_array(), because there's no clear hook for how to invoke the zalpha() function appropriately. Worse, at times I'm able to re-create the "patches lose their color and turn gray" bug when directly setting these values -- but I can't exactly figure out where or when. I'm working on a test case for this...

I can try to work up a patch for this, but if @WeatherGod or anyone else could give a hint or two as to the best approach, that would be helpful! I'm thinking that set_3d_properties() and do_3d_projection() have basically the logic required, which could be refactored into set_offsets() and set_array() calls that would do the right things...

PS. Last issue for today, I promise -- sorry for the spam!

Activity

  1. WeatherGod commented on Mar 21, 2012

    @WeatherGod
    Member

    The way to correctly deal with the losing color issue is to overload the set facecolors and edgecolors methods to modify _facecolors3d and such. But the getters will still have to get from the original attributes. I should also try and take advantage of the callback system for scalarmappables.

  2. added this to the milestone on Aug 18, 2014
  3. petehuang commented on Jan 7, 2017

    @petehuang
    Contributor

    Have there been any updates here in the last few years?

  4. modified the milestones: , needs sorting on Oct 6, 2022
  5. github-actions commented on Oct 9, 2023

    @github-actions

    This issue has been marked "inactive" because it has been 365 days since the last comment. If this issue is still present in recent Matplotlib releases, or the feature request is still wanted, please leave a comment and this label will be removed. If there are no updates in another 30 days, this issue will be automatically closed, but you are free to re-open or create a new issue if needed. We value issue reports, and this procedure is meant to help us resurface and prioritize issues that have not been addressed yet, not make them disappear. Thanks for your help!

  6. added
    status: closed as inactiveIssues closed by the "Stale" Github Action. Please comment on any you think should still be open.
    on Nov 8, 2023
  7. added
    keepItems to be ignored by the “Stale” Github Action
    and removed
    status: inactiveMarked by the “Stale” Github Action
    status: closed as inactiveIssues closed by the "Stale" Github Action. Please comment on any you think should still be open.
    on May 16, 2024
  8. rcomer commented on May 20, 2024

    @rcomer
    Member

    Looks like the intention was to re-open this one.

  9. reopened this on May 20, 2024
  10. scottshambaugh commented on Jul 22, 2026

    @scottshambaugh
    Contributor

    During the 7/20/2026 dev call we talked about this, and decided it is best implemented after the data prototype work is completed, for API commonality. See #30865

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions