Je voudrais pouvoir ajouter un titre à la légende, dans le code suivant. Cependant, en regardant le docs , je ne pense pas qu'il existe une méthode pour cela.
import plotly.plotly as py
import plotly.graph_objs as go
trace0 = go.Scatter(
x=[1, 2, 3, 4, 5],
y=[1, 2, 3, 4, 5],
)
trace1 = go.Scatter(
x=[1, 2, 3, 4, 5],
y=[5, 4, 3, 2, 1],
)
data = [trace0, trace1]
fig = go.Figure(data=data)
py.iplot(fig, filename='default-legend')
Mise à jour:
Pour ne pas définir la légende mais avoir la propriété d'annotation positionnée, veuillez utiliser le code ci-dessous.
import plotly.offline as py_offline
import plotly.graph_objs as go
py_offline.init_notebook_mode()
trace0 = go.Scatter(
x=[1, 2, 3, 4, 5],
y=[1, 2, 3, 4, 5],
)
trace1 = go.Scatter(
x=[1, 2, 3, 4, 5],
y=[5, 4, 3, 2, 1],
)
data = [trace0, trace1]
layout = go.Layout(
annotations=[
dict(
x=1.12,
y=1.05,
align="right",
valign="top",
text='Legend Title',
showarrow=False,
xref="paper",
yref="paper",
xanchor="center",
yanchor="top"
)
]
)
fig = go.Figure(data=data, layout = layout)
py_offline.iplot(fig)
Remarques:
Vous devez définir la position x
et y
pour les annotations à l'aide de cette méthode, pour différentes légendes.
Vous pouvez utiliser du html dans l'attribut text
(par exemple: text='Legend Title<br>kinda lengthy',
)
Tentative précédente:
Une autre approche consisterait à créer la légende et à utiliser des annotations pour ajouter le titre à la légende. À condition de ne pas utiliser le graphique en mode modifiable. Ainsi, dans l'exemple ci-dessous, la légende est définie sur x = 0 et y = 1, car je veux que mon titre de légende soit au-dessus de ma légende réelle, j'ai défini l'emplacement d'annotation comme x = 0, y = 1,5. x-ref et y-ref doivent être définies sur papier. Cela donnera une belle annotation comme
Code:
import plotly.plotly as py
import plotly.graph_objs as go
trace0 = go.Scatter(
x=[1, 2, 3, 4, 5],
y=[1, 2, 3, 4, 5],
)
trace1 = go.Scatter(
x=[1, 2, 3, 4, 5],
y=[5, 4, 3, 2, 1],
)
data = [trace0, trace1]
layout = go.Layout(
legend=dict(
x=0,
y=1,
traceorder='normal',
font=dict(
family='sans-serif',
size=12,
color='#000'
),
bgcolor='#E2E2E2',
bordercolor='#FFFFFF',
borderwidth=2
),
annotations=[
dict(
x=0,
y=1.05,
xref='paper',
yref='paper',
text='Legend Title',
showarrow=False
)
]
)
fig = go.Figure(data=data, layout = layout)
py.iplot(fig)
Je l'ai déjà fait en faisant une trace sans données
import plotly.plotly as py
import plotly.graph_objs as go
dummy_trace = go.Scatter(
x=[None], y=[None],
name='<b>Legend Heading</b>',
# set opacity = 0
line={'color': 'rgba(0, 0, 0, 0)'}
)
trace0 = go.Scatter(
x=[1, 2, 3, 4, 5],
y=[1, 2, 3, 4, 5],
)
trace1 = go.Scatter(
x=[1, 2, 3, 4, 5],
y=[5, 4, 3, 2, 1],
)
data = [dummy_trace, trace0, trace1]
fig = go.Figure(data=data)
py.iplot(fig)
Juste un léger ajout de propriété name
à la solution déjà proposée,
import plotly
import plotly.plotly as py
import plotly.graph_objs as go
plotly.offline.init_notebook_mode(connected=True)
trace0 = go.Scatter(
x=[1, 2, 3, 4, 5],
y=[1, 2, 3, 4, 5],
name="Data1")
data = [trace0]
layout = go.Layout(
legend=dict(
x=0,
y=1,
traceorder='normal',
font=dict(
family='sans-serif',
size=12,
color='#000'
),
bgcolor='#E2E2E1',
bordercolor='#FFFFFF',
borderwidth=2
),
annotations=[
dict(
x=0,
y=1.05,
xref='paper',
yref='paper',
text='Legend Title',
showarrow=False
)
])
fig = go.Figure(data=data, layout = layout)
plotly.offline.iplot(fig)
La propriété name
aide à ajouter des noms personnalisés aux légendes définies.