【发布时间】:2021-04-20 13:13:18
【问题描述】:
我已经使用 seaborn 的 line_kws 绘制了一条我想称之为“最合适”的线。
由于我不知道这条线总是透明的原因,即使我没有定义 alpha。
当我运行代码时,该图已创建,但之前出现错误:“RuntimeWarning:在更大的 = s > cutoff 中遇到无效值”。
有人知道我的代码有什么问题吗?
sns.regplot(y=power_consumption_pred_train1,
x=y_train_ns_m1,
line_kws={'lw': 2, 'color': 'red', 'label': 'best fit'}
).set(ylabel='predicted KWH Consumption (training set)',
xlabel='actual KWH Consumption (traning set)')
sns.lineplot(x=(0,3000), y=(0,3000), color='black', label='identity', legend='full', linestyle='dashed'
).lines[1]
plt.xlim(0, 3100)
plt.ylim(0, 3000)
plt.show()
【问题讨论】:
-
您的问题无法重现。你确定你运行的是最新版本的 seaborn 吗?由于某种原因,只显示了置信区间,而不是回归线本身。置信区间是使用与线相同颜色但具有高透明度的带。您可以尝试通过
sns.regplot(...., ci=None)抑制置信区间。为了使您的代码更具重现性,您可以创建一个玩具数据集。例如y_train_ns_m1 = np.random.normal(0, 3000, 100000); power_consumption_pred_train1 = y_train_ns_m1 + np.random.uniform(-500, 500, len(y_train_ns_m1)) -
我从 seaborn 获得了 0.11.0 版本并将其更新为 0.11.1,但这并没有改变。我可以抑制置信区间,但实际线没有出现。使用玩具数据集,我只有身份线。缺少最佳拟合和置信区间。我在 jupyter 实验室和 PyCharm 中遇到了这个问题。所以我认为这一定是seaborn的问题?
-
在使用玩具数据时尽量去掉身份线,因为这条线显然会在最上面。也许您在某处更改了一些全局设置?您是否在重启 Python 环境后运行测试示例?
-
很抱歉,因为它是更大代码的一部分,所以我没有看到错误消息:“RuntimeWarning:在更大的 = s > cutoff 中遇到无效值”。我认为问题出在我的 numpy 版本上。它是 1.18.0,现在我将其更新为 1.19.5。现在它起作用了。感谢您的帮助,我很抱歉占用您的时间
标签: python matplotlib plot seaborn alpha