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

如何在seaborn.pointplot中使用alpha参数?调用报错求解决

你猜的没错,seaborn的pointplot在后续版本里移除了直接传入alpha参数的支持,所以才会触发这个TypeError。下面给你两种设置透明度的替代方法:

方法1:用line_kws和marker_kws直接传参

这是最省事的方式,pointplot支持通过这两个参数分别给线条和标记点设置样式,包括透明度:

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

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)

ax = sns.pointplot(x='time', y='auc', data=data, hue='method',
                   line_kws={'alpha': 0.1},  # 给线条设置透明度
                   marker_kws={'alpha': 0.1}) # 给标记点设置透明度

plt.show()

方法2:绘制后手动修改对象

如果需要更灵活的控制(比如单独修改某一组的透明度),可以在绘图完成后,获取图中的线条和标记集合,逐个调整:

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

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)

ax = sns.pointplot(x='time', y='auc', data=data, hue='method')

# 修改所有线条的透明度
for line in ax.lines:
    line.set_alpha(0.1)

# 修改所有标记点的透明度
for collection in ax.collections:
    collection.set_alpha(0.1)

plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 20:20:55