1

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

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', template = 'plotly_dark', 
             text = 'Name', color = 'Color'
            )
fig.update_traces(textposition='bottom center')
fig

4

2 回答 2

1
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()
于 2021-01-15T12:15:16.800 回答
0

您也可以通过设置参数来做到这一点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')

这个问题+答案包含相同的想法:
Plotly:如何为类别分配特定颜色?

那里还有一个建议使用参数color_discrete_map,您专门将名称映射到颜色。

于 2021-01-15T12:36:11.497 回答