Вы можете получить цвет трассы, используя:
fig['data'][0]['line']['color']
Но вам придется указать цвет трассы, чтобы сделать это. Или вы можете убедиться, что цвет маркеров соответствует последовательности следов. Но мы можем получить все подробности, если это именно то, что вы пытаетесь выполнить sh:
Если вы изучаете код Из приведенного ниже фрагмента вы увидите, что я, в отличие от вас, не определил маркеры в том же go, что и строки. Скорее я добавил следы как чистые линии с mode='lines'
, а затем добавил отдельные следы для маркеров с mode='markers'
. При выполнении последнего я извлек цвета соответствующих строк, используя color=data['line']['color']
в al oop:
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()
Редактировать 1: Как сделать то же самое, ссылаясь на цвет по умолчанию sequence
По умолчанию, plotly следует последовательности цветов, которую можно найти с помощью px.colors.qualitative.Plotly
:
['#636EFA',
'#EF553B',
'#00CC96',
'#AB63FA',
'#FFA15A',
'#19D3F3',
'#FF6692',
'#B6E880',
'#FF97FF',
'#FECB52']
Следующий фрагмент выдаст точно такую же фигуру, что и раньше, но без необходимо определить цвета для следов.
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()