Python绘制散点图,从数据框中获取标记颜色

2024-03-28 12:34:25 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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


Tags: 数据name绘图df颜色figchangenick
2条回答

您也可以通过设置参数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: How to assign specific colors for categories?

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

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()

相关问题 更多 >