根据值更改标记颜色 - Plotly

Change marker colors based on values - Plotly

我想根据值更改标记颜色,所以我尝试了下面的代码

import pandas as pd
df = pd.read_csv("E:/values.csv")
def SetColor(x):
    if(x < 100):
        return "orange"
    elif(100<= x <=200):
        return "white"
    elif(x > 200):
        return "black"


import plotly.offline as pyo
import plotly.graph_objs as go
trace1 = go.Scatter(
                    x=df['Date'], y=df['Show1'], 
                    line = dict(color=list(map(SetColor, df['Show1']))),
                    mode='markers',name='Show1' 
                   )

fig = go.Figure(data=[trace1], layout=layout)
pyo.plot(fig,filename='final_plot.html')

但我收到以下错误消息

ValueError: 
    Invalid value of type 'builtins.list' received for the 'color' property of scatter.line
        Received value: ['black', 'black', 'orange', 'orange', 'orange', 'orange', 'orange', 'orange', 'orange', 'orange', 'white', 'white', 'white', 'white', 'white', 'white', 'white', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'orange', 'orange', 'orange', 'orange', 'orange', 'orange', 'orange', 'white', 'white', 'white', 'white', 'white', 'white', 'white', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'orange', 'orange', 'orange', 'orange', 'orange', 'orange', 'orange', 'white', 'white', 'white', 'white', 'white', 'white', 'white', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'orange', 'orange', 'orange', 'orange', 'orange', 'orange', 'orange', 'white', 'white', 'white', 'white', 'white', 'white', 'white', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'orange', 'orange', 'orange', 'orange', 'orange', 'orange', 'orange', 'white', 'white', 'white', 'white', 'white', 'white', 'white', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'orange', 'orange', 'orange', 'orange', 'orange', 'orange', 'orange', 'white', 'white', 'white', 'white', 'white', 'white', 'white', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'orange', 'orange', 'orange', 'orange', 'orange', 'orange', 'orange', 'orange', 'white', 'white', 'white', 'white', 'white', 'white', 'white', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'orange', 'orange', 'orange', 'orange', 'orange', 'orange', 'orange', 'white', 'white', 'white', 'white', 'white', 'white', 'white', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'orange', 'orange', 'orange', 'orange', 'orange', 'orange', 'orange', 'white', 'white', 'white', 'white', 'white', 'white', 'white', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'orange', 'orange', 'orange', 'orange', 'orange', 'orange', 'orange', 'white', 'white', 'white', 'white', 'white', 'white', 'white', 'white', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'orange', 'orange', 'orange', 'orange', 'orange', 'orange', 'orange', 'white', 'white', 'white', 'white', 'white', 'white', 'white', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'orange', 'orange', 'orange', 'orange', 'orange', 'orange', 'orange', 'white', 'white', 'white', 'white', 'white', 'white', 'white', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'orange', 'orange', 'orange', 'orange', 'orange', 'orange', 'orange', 'orange', 'white', 'white', 'white', 'white', 'white', 'white', 'white', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'black', 'orange', 'orange', 'orange', 'orange', 'orange', 'orange', 'orange']

我在这里错过了什么

您当前的代码无法正常工作的原因是您设置的 line 颜色不接受列表,而不是 marker 颜色,而 可以 接受列表。

而不是

line = dict(color=list(map(SetColor, df['Show1'])))

你可以使用

marker = dict(color=list(map(SetColor, df['Show1'])))

设置 marker 颜色。