gpt4 book ai didi

python - Plotly:如何获取跟踪颜色属性以绘制具有相同颜色的选定标记?

转载 作者:行者123 更新时间:2023-12-03 16:54:51 28 4
gpt4 key购买 nike

我正在尝试为我的每个跟踪绘制一个选定的标记。我想为标记和线条分配相同的颜色。有没有办法获得我的痕迹的颜色属性?

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()

enter image description here

最佳答案

更新版本的 plotly 的更新答案:
对于最近的绘图版本,可通过 fig.data 读取绘图图形对象的更多属性。 .现在,您可以在不定义线条或遵循颜色循环的情况下检索线条的颜色:

fig.data[0].line.color
与我的原始答案相比,为了使事情更加灵活,我整理了一个示例,您可以在同一行上有多个标记。标记在字典中组织如下:
markers = {'trace01':[[2,5], [4,9]],
'trace02':[[3,9]]}
我获得下面 plotly 的方法的本质是这个片段:
for d in fig.data:
if d.name in markers.keys():
for m in markers[d.name]:
fig.add_traces(go.Scatter(x=[m[0]], y = [m[1]],
mode='markers',
name=None,
showlegend=False,
marker=dict(color=d.line.color,size=15)
)
)
在这里你可以看到我实际上并没有使用 fig.data[0].line.color ,而是 color=d.line.color因为我已经通过名称将标记与跟踪匹配:
for d in fig.data:
if d.name in markers.keys():
for m in markers[d.name]:
阴谋:
enter image description here
完整代码:
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 = {'trace01':[[2,5], [4,9]],
'trace02':[[3,9]]}

for d in fig.data:
if d.name in markers.keys():
for m in markers[d.name]:
fig.add_traces(go.Scatter(x=[m[0]], y = [m[1]],
mode='markers',
name=None,
showlegend=False,
marker=dict(color=d.line.color,size=15)
)
)

fig.show()

旧版本的原始答案
您可以使用以下方法检索跟踪的颜色:
fig['data'][0]['line']['color']
但是您必须指定跟踪的颜色才能这样做。或者您可以确保标记的颜色与迹线的顺序相同。但是,如果这实际上是您要完成的任务,我们可以了解所有详细信息:
enter image description here
如果您研究下面的代码片段,您会发现我与您不同,没有在与行相同的过程中定义标记。相反,我已经用 mode='lines' 作为纯线条添加了痕迹。然后使用 mode='markers' 为标记添加单独的跟踪.在执行后者时,我使用 color=data['line']['color'] 检索了相应行的颜色。在一个循环中:
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:如何通过引用默认颜色序列来做同样的事情
默认情况下,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()

关于python - Plotly:如何获取跟踪颜色属性以绘制具有相同颜色的选定标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61353532/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com