在 seaborn.lineplot 中连接闭环?
Connecting a closed loop in seaborn.lineplot?
我有一个 2d 点列表,我可以用 lineplot
在 seaborn 中绘制,但我想将最后一个点连接回第一个点。似乎只需将第一个点添加到 DataFrame 的末尾就足够了,但由于某种原因,这是行不通的。我目前的解决方案是只添加另一个线段,对 lineplot
进行全新调用,但这似乎有点矫枉过正。我可以做得更好吗?
(使用内置数据集进行说明):
import seaborn as sns
import pandas as pd
sns.set_theme()
# Load an example dataset
tips = sns.load_dataset("tips")
mydata = tips[:10] # Just to make it short
# Copy the first row to the end and plot it all:
mydata = pd.concat([mydata, mydata[:1]], ignore_index = True)
sns.lineplot(data=mydata, x="total_bill", y="tip", sort=False)
目前的解决方案是添加这一行(或者,你知道,不使用 seaborn):
sns.lineplot(data=mydata.iloc[[0,-1]], x="total_bill", y="tip", sort=False)
(颜色只是为了强调)
我们如何通过单个 lineplot()
调用构建整个闭环?
@JohanC 给出了导致发现答案的评论...
Seaborn seems to group together rows with the same x-value.
查看 seaborn.lineplot
docs,更改它的方法是使用 estimator
参数(默认情况下,聚合为给定 x 的平均 y 值) :
sns.lineplot(data=mydata, x="total_bill", y="tip", sort=False, estimator=None)
我有一个 2d 点列表,我可以用 lineplot
在 seaborn 中绘制,但我想将最后一个点连接回第一个点。似乎只需将第一个点添加到 DataFrame 的末尾就足够了,但由于某种原因,这是行不通的。我目前的解决方案是只添加另一个线段,对 lineplot
进行全新调用,但这似乎有点矫枉过正。我可以做得更好吗?
(使用内置数据集进行说明):
import seaborn as sns
import pandas as pd
sns.set_theme()
# Load an example dataset
tips = sns.load_dataset("tips")
mydata = tips[:10] # Just to make it short
# Copy the first row to the end and plot it all:
mydata = pd.concat([mydata, mydata[:1]], ignore_index = True)
sns.lineplot(data=mydata, x="total_bill", y="tip", sort=False)
目前的解决方案是添加这一行(或者,你知道,不使用 seaborn):
sns.lineplot(data=mydata.iloc[[0,-1]], x="total_bill", y="tip", sort=False)
(颜色只是为了强调)
我们如何通过单个 lineplot()
调用构建整个闭环?
@JohanC 给出了导致发现答案的评论...
Seaborn seems to group together rows with the same x-value.
查看 seaborn.lineplot
docs,更改它的方法是使用 estimator
参数(默认情况下,聚合为给定 x 的平均 y 值) :
sns.lineplot(data=mydata, x="total_bill", y="tip", sort=False, estimator=None)