Python plotly散点图,从dataframe中获取marker颜色

Python plotly scatter chart, take marker color from dataframe

我有以下数据框,我想为其创建一个散点图:

dict1 = {'Name':['Tom', 'nick', 'krish', 'jack','jill'], 
        'Last':[20, 21, 19, 18,15],
         'Change':[-1,-5,1,3,-5],
        'Color':['#30C030', '#9acd32', '#f08080','#FF1E3E','#FF1E3E']}

df = pd.DataFrame(dict1)

我希望标记颜色是 'color' 列中列出的每个项目的确切颜色,但是,当我使用以下内容时,它会根据该列中的值分配默认颜色,而不是比分配列出的实际颜色:

fig = px.scatter(df, x = 'Last', y = 'Change', template = 'plotly_dark', 
             text = 'Name', color = 'Color'
            )
fig.update_traces(textposition='bottom center')
fig

import pandas as pd
import plotly.express as px

df = pd.DataFrame({'Name': ['tom', 'nick', 'krish', 'jack', 'jill'],
                   'Last': [20, 21, 19, 18, 15],
                   'Change': [-1, -5, 1, 3, -5],
                   'Color': ['#30C030', '#9acd32', '#f08080', '#FF1E3E', '#FF1E3E']})

fig = px.scatter(df, x='Last', y='Change', template='plotly_dark', text='Name')

fig.update_traces(marker=dict(color=df['Color']), textposition='bottom center')

fig.show()

您也可以通过设置参数color_discrete_sequence=df['Color']来做到这一点。
您在那里定义要使用的离散颜色:

import pandas as pd
import plotly.express as px

dict1 = {'Name': ['Tom', 'nick', 'krish', 'jack','jill'], 
         'Last': [20, 21, 19, 18,15],
         'Change': [-1,-5,1,3,-5],
         'Color': ['#30C030', '#9acd32', '#f08080','#FF1E3E','#FF1E3E'],}

df = pd.DataFrame(dict1)

fig = px.scatter(
    df, 
    x='Last', y='Change', 
    text='Name', 
    color='Name', 
    color_discrete_sequence=df['Color'],
)

fig.update_traces(textposition='bottom center')

本题+答案思路相同:

还有一个建议是使用参数 color_discrete_map,您可以在其中专门将名称映射到颜色。