首页 > 解决方案 > 基于字符串值 Plotly Python 的标记颜色

问题描述

这里很简单的问题,但我似乎无法弄清楚。我有一个包含 3 个可能值的数据框列:

print(df['Site'])

0        ABC
1        EFG
2        ABC
3        ABC
4        HIJ

当我绘图时,每个站点都有相同的颜色,但我希望每个标记都有一个颜色来代表该站点。我试图遵循 2 个选项但没有运气:

fig.add_trace(go.Scatter(x=df['Reported Date'], y=df['Score'],
    mode='markers', 
    marker= dict(color=list(map(SetColor, df['Site']))),
    name='Points', 
    text="Site: " + df['Site'].map(str) + " " + "Ticket: "+ df['Ticket ID'].map(str)))
fig.add_trace(go.Scatter(x=df['Reported Date'], y=df['Score'],
    mode='markers', 
    marker_color= df['Site'],
    name='Points', 
    text="Site: " + df['Site'].map(str) + " " + "Ticket: "+ df['Ticket ID'].map(str)))

我知道 Plotly/Dash 需要一个整数。有解决办法吗?如何在标记中绘制站点颜色?

标签: pythonplotlyplotly-dash

解决方案


我将从映射颜色和站点的字典开始。

d = {
    'ABC':'red',
    'DEF':'green',
    'GHI':'black'
}

您可以在那里使用任何HTML 颜色名称

然后,您可以根据您的 dict 制作颜色列表。

colors = [d[k] for k in df['Site'].values]

最后,您可以传递marker_color=colorsfig.add_trace()


推荐阅读