如何基于DataFrame列分类设置Plotly标记线颜色(无填充)
实现无填充色、仅标记线按分类着色的Plotly散点图
示例数据
col1 col2 col3 0 1 10 C 1 2 15 A 2 3 20 A 3 4 25 A 4 5 30 B 5 6 35 B 6 7 40 B 7 8 45 B 8 9 50 B 9 10 55 B
现有代码
import plotly.express as px import pandas as pd df = pd.DataFrame({'col1':[1,2,3,4,5,6,7,8,9,10], 'col2':[10,15,20,25,30,35,40,45,50,55], 'col3':['C','A','A','A','B','B','B','B','B','B']}) fig = px.scatter(df, x='col1', y='col2', color='col3') fig.update_traces(marker=dict(size=12)) fig.show()
修改方法
要让标记无填充色,仅保留对应col3分类的标记线颜色,直接调整标记样式参数即可:
简洁版代码
import plotly.express as px import pandas as pd df = pd.DataFrame({'col1':[1,2,3,4,5,6,7,8,9,10], 'col2':[10,15,20,25,30,35,40,45,50,55], 'col3':['C','A','A','A','B','B','B','B','B','B']}) fig = px.scatter(df, x='col1', y='col2', color='col3') fig.update_traces( marker=dict( color='rgba(0,0,0,0)', # 设置填充色为全透明 line=dict( width=2, # 标记线宽度,可按需调整 color='currentcolor' # 自动沿用分类对应的颜色 ), size=12 ) ) fig.show()
灵活遍历版代码
如果需要对单个分类的样式做自定义调整,也可以逐个修改trace:
import plotly.express as px import pandas as pd df = pd.DataFrame({'col1':[1,2,3,4,5,6,7,8,9,10], 'col2':[10,15,20,25,30,35,40,45,50,55], 'col3':['C','A','A','A','B','B','B','B','B','B']}) fig = px.scatter(df, x='col1', y='col2', color='col3') for trace in fig.data: trace.marker.color = 'rgba(0,0,0,0)' # 设置填充色透明 trace.marker.line.color = trace.name # 绑定分类对应的颜色 trace.marker.line.width = 2 trace.marker.size = 12 fig.show()
关键说明
rgba(0,0,0,0)是完全透明的颜色,确保标记没有填充色;currentcolor会自动匹配每个分类的预设颜色,无需手动指定;- 调整
line.width可以让标记线更显眼,数值可根据需求修改。
内容的提问来源于stack exchange,提问作者serdar_bay
相关产品推荐
相关产品推荐

