Python绘图更改标记';s颜色

Python绘图更改标记';s颜色,python,colors,plotly,marker,Python,Colors,Plotly,Marker,我想定制标记颜色,出于这个原因,我制作了SetColor函数。但它只会更改图例中的名称,而不会更改可视化中的颜色。如何修复它 import plotly.express as px import pandas as pd rows=[['501-600','15','122.58333','45.36667'], ['till 500','4','12.5','27.5'], ['more 1001','41','-115.53333','38.08'],

我想定制标记颜色,出于这个原因,我制作了SetColor函数。但它只会更改图例中的名称,而不会更改可视化中的颜色。如何修复它

import plotly.express as px
import pandas as pd

rows=[['501-600','15','122.58333','45.36667'],
      ['till 500','4','12.5','27.5'],
      ['more 1001','41','-115.53333','38.08'],
      ]

colmns=['bins','data','longitude','latitude']
df=pd.DataFrame(data=rows, columns=colmns)
df = df.astype({"data": int})

def SetColor(x):
        if(x == '501-600'):
            return "steelblue"
        elif(x == 'till 500'):
            return "mintcream"
        elif(x == 'more 1001'):
            return "palegoldenrod"

fig=px.scatter_geo(df,lon='longitude', lat='latitude',color=list(map(SetColor, df['bins'])),
                      opacity=0.5,size='data',
                      projection="natural earth")

fig.update_traces(marker=dict(symbol='octagon',
                                line=dict(width=0)))

fig.show()

散点_geo中的颜色参数指的是类别列,而不是要拾取的颜色。因此,您应该设置color='bins',并添加一个新参数'color\u discrete\u sequence',使用您想要的特定颜色。请参见下面的代码和结果:

import plotly.express as px
import pandas as pd

rows=[['501-600','15','122.58333','45.36667'],
      ['till 500','4','12.5','27.5'],
      ['more 1001','41','-115.53333','38.08'],
      ]

colmns=['bins','data','longitude','latitude']
df=pd.DataFrame(data=rows, columns=colmns)
df = df.astype({"data": int})

# def SetColor(x):
#         if(x == '501-600'):
#             return "steelblue"
#         elif(x == 'till 500'):
#             return "mintcream"
#         elif(x == 'more 1001'):
#             return "palegoldenrod"

fig=px.scatter_geo(df,lon='longitude', lat='latitude',color='bins',
                      opacity=0.5,size='data',
                      projection="natural earth", color_discrete_sequence=['steelblue', 'mintcream', 'palegoldenrod'])

fig.update_traces(marker=dict(symbol='octagon',
                                line=dict(width=0)))

fig.show()