Multiple legends are not independent in their placement and placement is not consistent
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 18.8k
- Forks
- 2.8k
- Merge moyen
- 16 h 26 min
- PR mergées (30 j)
- 21
Description
I am currently experimenting with the new-ish multi-legend feature. Unfortunately I seem to have stumbled across a case in which the legends are not behaving independently even though it is not clear why.
The following code demonstrates this:
from copy import deepcopy
import plotly.graph_objects as go
error_fig = {
'data': [
{
'legend': 'legend2',
'showlegend': True,
'type': 'scatter',
'x': [0, 1],
'xaxis': 'x2',
'y': [0, -1],
'yaxis': 'y2'
},
{
'legend': 'legend3',
'showlegend': True,
'type': 'scatter',
'x': [0, 1],
'xaxis': 'x3',
'y': [0, 1],
'yaxis': 'y3'
},
{
'legend': 'legend3',
'showlegend': True,
'type': 'scatter',
'x': [0, 1],
'xaxis': 'x3',
'y': [0, -1],
'yaxis': 'y3'
},
{
'legend': 'legend3',
'showlegend': True,
'type': 'scatter',
'x': [0, 1],
'xaxis': 'x3',
'y': [0, 1],
'yaxis': 'y3'
},
{
'legend': 'legend3',
'showlegend': True,
'type': 'scatter',
'x': [0, 1],
'xaxis': 'x3',
'y': [0, 1],
'yaxis': 'y3'
}
],
'layout': {
'legend2': {
'orientation': 'v',
'visible': True,
'x': 0.515,
'xanchor': 'left',
'xref': 'paper',
'y': 0.3,
'yanchor': 'top',
'yref': 'paper'
},
'legend3': {
'entrywidth': 0.2,
'entrywidthmode': 'fraction',
'orientation': 'h',
'visible': True,
'x': 0.95,
'xanchor': 'left',
'xref': 'paper',
'y': 1.0,
'yanchor': 'top',
'yref': 'paper'
},
'xaxis2': {'anchor': 'y2', 'domain': [0, 0.5]},
'xaxis3': {'anchor': 'y3', 'domain': [0.45, 0.95]},
'yaxis2': {'anchor': 'x2', 'domain': [0, 0.3]},
'yaxis3': {'anchor': 'x3', 'domain': [0.7, 1.0]}
}
}
correct_fig = deepcopy(error_fig)
correct_fig["layout"]["legend3"]["x"] = 1
fig_correct = go.Figure(correct_fig)
fig_correct.show()
fig_error = go.Figure(error_fig)
fig_error.show()
Where fig_correct produces this output upon png-download (The issue also exists in interactive mode with varying severity based on screen size):
fig_error produces this:
Which for me makes no sense as the only change that occurred was the placement of legend3 along x. I would therefore not expect legend2 to move. Additionally, for me it does not make any sense, why any large movement should occur at all, as I only changed the x-coordinate of legend3 by 0.05 .
For me the Issue only occurs when using "orientation": "h".
I am on Python 3.11.1
My pip dump:
Package Version
---------- -------
packaging 23.1
pip 22.3.1
plotly 5.17.0
setuptools 65.5.0
tenacity 8.2.3
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par exécuter la reproduction Python fournie avec Plotly 5.17.0 et comparez les mises en page de légendes multiples horizontales en mode interactif et dans la sortie PNG. Aucun fichier source ni test n’étant indiqué, suivez les points d’entrée du positionnement des légendes et du rendu de la mise en page à partir de la reproduction ; le travail est terminé lorsque le déplacement de legend3 ne déplace plus unexpectedly legend2 et ne provoque plus de déplacement disproportionné.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- data-visualization
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 38/100