Skip to content

3D collections do not proper handle edgecolor='face' #18931

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
tacaswell opened this issue Nov 11, 2020 · 2 comments
Open

3D collections do not proper handle edgecolor='face' #18931

tacaswell opened this issue Nov 11, 2020 · 2 comments
Labels
Difficulty: Medium https://matplotlib.org/devdocs/devel/contribute.html#good-first-issues Good first issue Open a pull request against these issues if there are no active ones! topic: mplot3d

Comments

@tacaswell
Copy link
Member

Bug report

Bug summary

If the edge color is 'face' on some (all?) of the 3D version of the collections we lose that fact and end up "locking in" the first colors that we render.

Code for reproduction

This test currently fails, it should pass. The issue (once #18929 is merged) fails due to the edges still being jet colored.

@pytest.mark.style('default')
@check_figures_equal(extensions=["png"])
def test_scalarmap_change_cmap(fig_test, fig_ref):

    x, y, z = np.array((list(itertools.product(*[np.arange(0, 5, 1),
                                                 np.arange(0, 5, 1),
                                                 np.arange(0, 5, 1)])))).T
    c = x + y

    # test
    ax_test = fig_test.add_subplot(111, projection='3d')
    sc_test = ax_test.scatter(x, y, z, c=c, s=40, cmap='jet')
    # force a draw
    fig_test.canvas.draw()

    sc_test.set_cmap('viridis')

    # ref
    ax_ref = fig_ref.add_subplot(111, projection='3d')
    sc_ref = ax_ref.scatter(x, y, z, c=c, s=40, cmap='viridis')

Matplotlib version

  • Operating system: any
  • Matplotlib version: default branch
  • Matplotlib backend (print(matplotlib.get_backend())): any
  • Python version: any
  • Jupyter version (if applicable): any
  • Other libraries: --

This is a good first issue because there is no API design, but medium difficulty because it will require splunking through the mplot3D code and deciding the best way to do the book keeping that the edgecolors may be "face" (which means "what ever the face colors are").

@tacaswell tacaswell added topic: mplot3d Difficulty: Medium https://matplotlib.org/devdocs/devel/contribute.html#good-first-issues Good first issue Open a pull request against these issues if there are no active ones! labels Nov 11, 2020
@tacaswell tacaswell added this to the v3.4.0 milestone Nov 11, 2020
@QuLogic
Copy link
Member

QuLogic commented Nov 11, 2020

I think this would be fixed by #18932; should I incorporate this test there?

@QuLogic QuLogic modified the milestones: v3.4.0, v3.5.0 Jan 27, 2021
@QuLogic QuLogic modified the milestones: v3.5.0, v3.6.0 Sep 25, 2021
@QuLogic QuLogic modified the milestones: v3.6.0, v3.7.0 Jul 8, 2022
@QuLogic QuLogic modified the milestones: v3.7.0, future releases Jan 25, 2023
@divenire05
Copy link

divenire05 commented Dec 30, 2024

Is this issue still open? Also, do you know what files/parts of the codebase would need to be modified to resolve the bug here?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Difficulty: Medium https://matplotlib.org/devdocs/devel/contribute.html#good-first-issues Good first issue Open a pull request against these issues if there are no active ones! topic: mplot3d
Projects
None yet
Development

No branches or pull requests

3 participants