如何在Plotly Express散点图中为指定点设不同颜色并加图例
解决方案
要实现指定导演的高亮显示、自定义颜色及图例标注,你可以通过给数据集新增分组列、配置颜色映射的方式完成,具体步骤如下:
1. 给数据集添加分组标识列
在数据框中新增一列,用来区分「要高亮的导演」和「其他导演」,且给每个高亮导演单独标记,让Plotly能自动生成对应的图例项:
# 新增分组列:高亮导演用自身名字标识,其余归为"其他导演" BudProfDirectorDF['highlight_group'] = BudProfDirectorDF['primary_name'].apply( lambda x: x if x in DirectorsToHighlight else '其他导演' )
2. 定义自定义颜色映射
创建颜色字典,给每个目标导演指定专属颜色,同时给普通导演设置默认颜色:
# 自定义颜色映射,可根据喜好修改色值 color_map = { 'Pierre Coffin': '#FF6B6B', # 珊瑚红 'Chris Renaud': '#4ECDC4', # 薄荷绿 'Kyle Balda': '#FFE66D', # 柠檬黄 'Zack Snyder': '#1A535C', # 深青蓝 'Christopher Nolan': '#7B435B', # 紫褐 'Joe Russo': '#2ECC71', # 你要求的绿色 '其他导演': '#95A5A6' # 灰色 }
3. 生成带高亮效果的散点图
调用px.scatter时,通过color参数绑定分组列,并用color_discrete_map传入自定义颜色配置:
BudProfDirector = px.scatter( BudProfDirectorDF, x='production_budget', y='Worldwide_Profit', hover_name='primary_name', color='highlight_group', # 按分组列区分颜色 color_discrete_map=color_map, # 应用自定义颜色 title='导演制作预算 vs 全球利润' # 可选:添加图表标题 ) # 可选:调整图例位置,避免遮挡数据点 BudProfDirector.update_layout(legend=dict(orientation='h', yanchor='bottom', y=1.02, xanchor='right', x=1)) # 渲染图表 BudProfDirector.show()
效果说明
- 所有在
DirectorsToHighlight列表中的导演,散点会显示你指定的专属颜色,图例中会单独列出他们的名字和对应色标 - 其余导演的散点统一显示灰色,图例中归为「其他导演」
- 悬停交互保留原有逻辑,依然会显示导演名称
内容的提问来源于stack exchange,提问作者Undergraduate Mathy Boi
相关产品推荐
相关产品推荐

