J'essaie de tracer un marqueur sélectionné pour chacune de mes traces dans tracé. Je voudrais affecter la même couleur au marqueur et à la ligne. Y a-t-il une façon de faire passer l'attribut couleur de mes traces?
fig = go.Figure()
fig.add_trace(go.Scatter(
x=[0, 1, 2, 3, 4, 5],
y=[0, 3, 5, 7, 9, 11],
name='trace01',
mode='lines+markers',
marker=dict(size=[0, 0, 30, 0, 0, 0],
color=[0, 0, 10, 0, 0, 0])
))
fig.add_trace(go.Scatter(
x=[0, 1, 2, 3, 4, 5],
y=[3, 5, 7, 9, 11, 13],
name='trace02',
mode='lines+markers',
marker=dict(size=[0, 0, 0, 30, 0, 0],
color=[0, 0, 0, 10, 0, 0])
))
fig.show()
Vous pouvez récupérer la couleur d'une trace en utilisant:
fig['data'][0]['line']['color']
Mais vous devrez spécifier la couleur de la trace pour pouvoir le faire. Ou vous pouvez vous assurer que la couleur des marqueurs suive la même séquence que les traces. Mais nous pouvons accéder à tous les détails si cela est en fait ce que vous essayez d'accomplir:
Si vous étudiez l'extrait de code ci-dessous, vous verrez que je, contrairement à vous, n'a pas défini les marqueurs de la même manière que les lignes. Au contraire, j'ai ajouté les traces comme des lignes pures avec mode='lines'
puis ajouté des traces séparées pour les marqueurs avec mode='markers'
. Lorsque cela fait ce dernier, j'ai récupéré les couleurs des lignes correspondantes en utilisant color=data['line']['color']
dans une boucle:
import plotly.graph_objects as go
fig = go.Figure()
fig.add_trace(go.Scatter(
x=[0, 1, 2, 3, 4, 5],
y=[0, 3, 5, 7, 9, 11],
name='trace01',
line=dict(color='blue'),
mode='lines',
))
fig.add_trace(go.Scatter(
x=[0, 1, 2, 3, 4, 5],
y=[3, 5, 7, 9, 11, 13],
name='trace02',
line=dict(color='red'),
mode='lines'
))
markers = [[2,5],
[3,9]]
for i, data in enumerate(fig['data']):
#print(data['line']['color'])
fig.add_trace(go.Scatter(x=[markers[i][0]], y=[markers[i][1]],
mode='markers',
name=None,
showlegend=False,
marker=dict(color=data['line']['color'],
size=15
)))
fig.show()
Edit 1: Comment faire la même chose en référençant la séquence de couleur par défaut
Par défaut, suit traitant une séquence de couleur pouvant être trouvée à l'aide de px.colors.qualitative.Plotly
:
['#636EFA',
'#EF553B',
'#00CC96',
'#AB63FA',
'#FFA15A',
'#19D3F3',
'#FF6692',
'#B6E880',
'#FF97FF',
'#FECB52']
L'extrait suivant produira exactement le même chiffre qu'auparavant, mais wihtout avoir à définir les couleurs des traces.
import plotly.graph_objects as go
import plotly.express as px
fig = go.Figure()
fig.add_trace(go.Scatter(
x=[0, 1, 2, 3, 4, 5],
y=[0, 3, 5, 7, 9, 11],
name='trace01',
mode='lines',
))
fig.add_trace(go.Scatter(
x=[0, 1, 2, 3, 4, 5],
y=[3, 5, 7, 9, 11, 13],
name='trace02',
mode='lines'
))
colors = px.colors.qualitative.Plotly
markers = [[2,5],
[3,9]]
for i, data in enumerate(fig['data']):
#print(data['line']['color'])
fig.add_trace(go.Scatter(x=[markers[i][0]], y=[markers[i][1]],
mode='markers',
name=None,
showlegend=False,
marker=dict(color=colors[i],
size=15
)))
fig.show()