Skip to content

Conversation

@timhoffm
Copy link
Member

@timhoffm timhoffm commented Oct 5, 2025

Closes #30613.

@timhoffm timhoffm force-pushed the fix-violin-artist-alpha branch from 3c87254 to 520c6c7 Compare October 5, 2025 16:50
Comment on lines 8975 to 8976
You can use the ``(color, alpha)`` tuple notation to pass
semi-transparent colors.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Little unclear here, do you mean that (color, alpha) supercedes but does not set the artist alpha? So for example linecolor still used the artist alpha?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed to

To set transparency for facecolor or edgecolor use
(color, alpha) tuples.

@timhoffm timhoffm force-pushed the fix-violin-artist-alpha branch from 520c6c7 to f70a4a2 Compare October 6, 2025 07:02
@timhoffm timhoffm added this to the v3.11.0 milestone Oct 7, 2025
@timhoffm timhoffm added the Release critical For bugs that make the library unusable (segfaults, incorrect plots, etc) and major regressions. label Oct 7, 2025
@timhoffm
Copy link
Member Author

timhoffm commented Oct 7, 2025

Test failure is our flaky timeout and unrelated to the PR.

Copy link
Member

@story645 story645 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not clear on why the test sets a facecolor via if statement but otherwise looks good. Thanks for taking care of this.

# Case 1: If facecolor is unspecified, it's the first color from the color cycle
# with Artist-level alpha=0.3
facecolor = ('y' if mpl.rcParams['_internal.classic_mode']
else plt.rcParams['axes.prop_cycle'].by_key()['color'][0])
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why is the color controlled by if statement, rather than fixed, given that this is a test?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

when debugging this I ran local code snippets until it worked. Then , I turned them into a test, which failed because our tests still use the classic style.

I figured it is reasonable to make the test robust to work with any style even though we are only testing one. It may be that we switch to using our default theme for testing at some point in the future. And it would be a nuisance if that test then falls over and someone has to figure out why.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it is reasonable to make the test robust to work with any style even though we are only testing one

I think that's what paramaterization is for and that tests should always have the things being tested fixed, but since this is release critical you're welcome to merge.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We typically do not test multiple styles. And also here, the tested logic - i.e. the alpha handling - is not style dependent. It's only that the test boundary conditions - i.e. the default facecolor - are style dependent. You could work around this by doing a first plot without alpha and infer the facecolor from that, but I figure it's simpler to just hard-code the two cases, even if they are not both exercised in the tests.

@timhoffm timhoffm merged commit 27adcbd into matplotlib:main Oct 13, 2025
47 of 49 checks passed
@timhoffm timhoffm deleted the fix-violin-artist-alpha branch October 13, 2025 20:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: violin's default alpha no longer persists

3 participants