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

如何在seaborn.lineplot中分别设置标记和线条的透明度

实现方案

要实现线条透明度高于标记(即线条更淡、标记更实)的效果,核心是分别控制折线和标记的透明度,不要使用统一的alpha参数。你可以直接使用以下修改后的代码实现需求:

import matplotlib
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd

matplotlib.rcParams['legend.handlelength'] = 0
matplotlib.rcParams['legend.numpoints'] = 1

data = [{'method': 'end-to-end', 'k': 1, 'time': 181.0, 'auc': 69.76}, {'method': 'end-to-end', 'k': 2, 'time': 193.0, 'auc': 71.12}, {'method': 'end-to-end', 'k': 3, 'time': 256.0, 'auc': 71.84}, {'method': 'end-to-end', 'k': 4, 'time': 302.0, 'auc': 71.87}, {'method': 'end-to-end', 'k': 5, 'time': 365.0, 'auc': 71.89}, {'method': 'end-to-end', 'k': 8, 'time': 602.0, 'auc': 71.87}, {'method': 'end-to-end', 'k': 10, 'time': 743.0, 'auc': 71.84}, {'method': 'first', 'k': 1, 'time': 82.0, 'auc': 69.01}, {'method': 'first', 'k': 2, 'time': 105.0, 'auc': 69.45}, {'method': 'first', 'k': 3, 'time': 171.0, 'auc': 70.11}, {'method': 'first', 'k': 4, 'time': 224.0, 'auc': 70.36}, {'method': 'first', 'k': 5, 'time': 279.0, 'auc': 70.74}, {'method': 'first', 'k': 8, 'time': 517.0, 'auc': 70.81}, {'method': 'first', 'k': 10, 'time': 654.0, 'auc': 70.98}]

data = pd.DataFrame(data)
# 先绘制折线,不显示标记,设置低透明度让线条更淡
g = sns.lineplot(x='time', y='auc', data=data, sort=False, hue='method', style="method", dashes=False, alpha=0.3, legend=False)
# 再绘制散点标记,设置高透明度让标记更实
sns.scatterplot(x='time', y='auc', data=data, hue='method', style='method', markers=['o','v'], s=49, alpha=1)
plt.legend(loc='lower right')
plt.show()

你可以根据需求调整折线的alpha参数,数值越小线条越透明;散点的s=49对应原来的markersize=7(散点大小参数s为面积,等于标记尺寸的平方),也可以按需调整。

内容的提问来源于stack exchange,提问作者namespace-Pt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 01:45:03