Skip to content
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

Fix boxplot legend entries part 2 #27711

Merged
merged 2 commits into from
Jan 31, 2024
Merged

Fix boxplot legend entries part 2 #27711

merged 2 commits into from
Jan 31, 2024

Conversation

saranti
Copy link
Contributor

@saranti saranti commented Jan 27, 2024

PR summary

Continuation of PR #27568

Fixes #20512

PR checklist

Copy link
Member

@tacaswell tacaswell left a comment

Choose a reason for hiding this comment

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

It may be better to add the default label in merge_kw_rc rather than have it 4 times, but this is fine to merge.

Copy link
Member

@dstansby dstansby left a comment

Choose a reason for hiding this comment

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

Looks good - I've left a small optional suggestion to improve the test code.

lib/matplotlib/tests/test_legend.py Outdated Show resolved Hide resolved
@dstansby dstansby merged commit a382045 into matplotlib:main Jan 31, 2024
43 of 45 checks passed
@saranti saranti deleted the boxlegend branch February 3, 2024 06:25
timhoffm added a commit to timhoffm/matplotlib that referenced this pull request Feb 12, 2024
This PR removes the propagation of `labels` to any artist legend labels.

Other than the rest of the plotting functions `labels` is not used for legend labels
but for xtick labels. This is only poorly documented via
https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.bxp.html and in an
[example](https://matplotlib.org/stable/gallery/statistics/boxplot_color.html).

Whatever our way forward regarding the use of `labels` is, we should by no means
propagate them simultaneously to xticks and legend entries. This coupling would cripple
users' configurability and limit our ability to migrate to a clear API where legend
labels and tick labels can be configured independently.

Until we have sorted out a better API, the recommended solution for the original issue
matplotlib#20512 is to grab the artists returned from `boxplot()` and either `set_label()` on
them or pass them to the legend call `ax.legend(handles, labels)`.
@timhoffm timhoffm mentioned this pull request Feb 12, 2024
timhoffm added a commit to timhoffm/matplotlib that referenced this pull request Feb 12, 2024
This PR removes the propagation of `labels` to any artist legend labels.

Other than the rest of the plotting functions `labels` is not used for legend labels
but for xtick labels. This is only poorly documented via
https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.bxp.html and in an
[example](https://matplotlib.org/stable/gallery/statistics/boxplot_color.html).

Whatever our way forward regarding the use of `labels` is, we should by no means
propagate them simultaneously to xticks and legend entries. This coupling would cripple
users' configurability and limit our ability to migrate to a clear API where legend
labels and tick labels can be configured independently.

Until we have sorted out a better API, the recommended solution for the original issue
matplotlib#20512 is to grab the artists returned from `boxplot()` and either `set_label()` on
them or pass them to the legend call `ax.legend(handles, labels)`.
timhoffm added a commit to timhoffm/matplotlib that referenced this pull request Feb 14, 2024
This PR removes the propagation of `labels` to any artist legend labels.

Other than the rest of the plotting functions `labels` is not used for legend labels
but for xtick labels. This is only poorly documented via
https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.bxp.html and in an
[example](https://matplotlib.org/stable/gallery/statistics/boxplot_color.html).

Whatever our way forward regarding the use of `labels` is, we should by no means
propagate them simultaneously to xticks and legend entries. This coupling would cripple
users' configurability and limit our ability to migrate to a clear API where legend
labels and tick labels can be configured independently.

Until we have sorted out a better API, the recommended solution for the original issue
matplotlib#20512 is to grab the artists returned from `boxplot()` and either `set_label()` on
them or pass them to the legend call `ax.legend(handles, labels)`.
dstansby added a commit that referenced this pull request Feb 14, 2024
@timhoffm
Copy link
Member

I'm sorry, but we had to revert this, because it's not a generally viable solution for boxplot legends (see #27780 (comment)).

We'll be working out a better legend support for boxplots in #27792.

Until that is in place, the recommended way to add legend entries is to grab the relevant Artists from the boxplot() return value and pass them as handles to the legend, e.g. as demonstrated in https://stackoverflow.com/a/68124759.

@saranti saranti mentioned this pull request Mar 1, 2024
5 tasks
Impaler343 pushed a commit to Impaler343/matplotlib that referenced this pull request Mar 8, 2024
This PR removes the propagation of `labels` to any artist legend labels.

Other than the rest of the plotting functions `labels` is not used for legend labels
but for xtick labels. This is only poorly documented via
https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.bxp.html and in an
[example](https://matplotlib.org/stable/gallery/statistics/boxplot_color.html).

Whatever our way forward regarding the use of `labels` is, we should by no means
propagate them simultaneously to xticks and legend entries. This coupling would cripple
users' configurability and limit our ability to migrate to a clear API where legend
labels and tick labels can be configured independently.

Until we have sorted out a better API, the recommended solution for the original issue
matplotlib#20512 is to grab the artists returned from `boxplot()` and either `set_label()` on
them or pass them to the legend call `ax.legend(handles, labels)`.
Impaler343 pushed a commit to Impaler343/matplotlib that referenced this pull request Mar 14, 2024
This PR removes the propagation of `labels` to any artist legend labels.

Other than the rest of the plotting functions `labels` is not used for legend labels
but for xtick labels. This is only poorly documented via
https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.bxp.html and in an
[example](https://matplotlib.org/stable/gallery/statistics/boxplot_color.html).

Whatever our way forward regarding the use of `labels` is, we should by no means
propagate them simultaneously to xticks and legend entries. This coupling would cripple
users' configurability and limit our ability to migrate to a clear API where legend
labels and tick labels can be configured independently.

Until we have sorted out a better API, the recommended solution for the original issue
matplotlib#20512 is to grab the artists returned from `boxplot()` and either `set_label()` on
them or pass them to the legend call `ax.legend(handles, labels)`.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Bad boxplot legend entries
6 participants