You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改seaborn图例样式 将pIC50项设置为尺寸匹配的无填充空心圆

Seaborn散点图图例pIC50项改为空心圆形的实现方法

以下是修改后的可运行代码,仅需在原有逻辑基础上增加图例手柄属性调整步骤即可实现需求:

import seaborn as sns
import matplotlib.pyplot as plt

# seaborn样式设置需放在绘图前才能生效
sns.set_style("whitegrid", {"ytick.major.size": 100,"xtick.major.size": 2, 'grid.linestyle': 'solid'})

plt.figure(figsize=(7, 7))
sns.scatterplot(x='MW', y='LogP', data=df_2class, hue='class', size='pIC50', edgecolor='black', alpha=0.2)

plt.xlabel('MW', fontsize=14, fontweight='bold')
plt.ylabel('LogP', fontsize=14, fontweight='bold')
# 接收plt.legend返回的图例对象
leg = plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0)

# 调整pIC50对应图例项样式:此处假设class字段共2个分类,前2个图例项为class分类,后续都是pIC50项
# 可根据实际class的分类数量调整切片的起始索引
for handle in leg.legend_handles[2:]:
    handle.set_facecolor('none') # 清除内部填充
    handle.set_edgecolor('black') # 保留黑色描边
    handle.set_alpha(1) # 可选配置:如果需要图例边框不透明可修改alpha值

plt.show()

补充说明:

  • 不确定class分类数量的情况,可先打印len(df_2class['class'].unique())获取数值后再调整切片起始索引
  • 若需要图中的散点也同步改为空心样式,直接在sns.scatterplot的参数中添加facecolor='none'即可
  • 旧版本Matplotlib可将代码中的leg.legend_handles替换为leg.get_handles()使用

内容的提问来源于stack exchange,提问作者tassaneel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 02:45:07