Seaborn折线图无法在点之间连接线

4
我该如何在seaborn中使用lineplot绘图函数来创建一个没有连接点之间的线条的图表。我知道这个函数被称为lineplot,但它有一个有用的功能,即将所有具有相同x值的数据点合并,并绘制一个单独的均值和置信区间。
tips = sns.load_dataset('tips')
sns.lineplot(x='size', y='total_bill', data=tips, marker='o', err_style='bars')

lineplot

如何绘制不带线条的图表?我不确定如何更好地表达我的问题。如何只绘制点?无线条线性图?

我知道seaborn有一个pointplot函数,但那是用于分类数据的。在某些情况下,我的x值为连续值,因此pointplot无法使用。

我意识到可以通过matplotlib图形艺术家来删除线条,但是随着图中内容的增加,这变得更加复杂。我想知道是否有一些参数可以传递给lineplot函数。


2
散点图怎么样?例如 sns.scatterplot(...) - keepAlive
1
目前使聚合具有相同x值的点的参数是无效的:https://seaborn.pydata.org/generated/seaborn.scatterplot.html - bernie
关于您的需求存在一些混乱。如果您不希望在点之间有线条,则不需要线条,因此lineplot无法使用。如果是这种情况,您需要将数据分类到箱中,绘制平均值或平均值与标准偏差或置信区间。 - hrokr
1
是的,我不需要一条线,但这正是我想要的。Seaborn 的便利之处在于它通过自助采样或使用标准差自动计算置信区间。 - bernie
3个回答

8

要得到无连接线的误差条,您可以将 linestyle 参数设置为 ''

import seaborn as sns

tips = sns.load_dataset('tips')
sns.lineplot(x='size', y='total_bill', data=tips, marker='o', linestyle='', err_style='bars')

no line

其他类型的线条样式也可能很有趣,例如“松散点线”:sns.lineplot(..., linestyle=(0, (1, 10)))

loosely dotted


谢谢。我想我尝试过linestyle=None或linestyle='none',但都没有起作用。 - bernie
另外需要注意的是,需要使用 seaborn 0.11 或更高版本。我之前使用的是 0.10.1,无法正常工作。 - bernie
对于任何想要以上内容但不带条形图的人,只需使用:linestyle ='',marker ='o' - Reddspark

1

对我来说,只有 join = True 有效。

sns.pointplot(data=df, x = "x_attribute", y = "y_attribute", ci= 95, join=False)


1

我建议将join设置为False。


你的答案可以通过提供更多支持性信息来改进。请编辑以添加进一步细节,例如引用或文档,以便其他人可以确认您的答案是否正确。您可以在帮助中心找到有关如何撰写好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接