Seaborn lineplot - 连接散点图的点

4
我有关于sns的线图和散点图的问题。基本上,我想做的是将散点图的点连接起来,呈现最接近的线连接映射点。不知何故,当遇到具有相同x轴值的点时,lineplot会改变宽度。我希望lineplot一直保持相同的实线。
代码如下:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

data = {'X': [13, 13, 13, 12, 11], 'Y':[14, 11, 13, 15, 20], 'NumberOfPlanets':[2, 5, 2, 1, 2]}
cts = pd.DataFrame(data=data)

plt.figure(figsize=(10,10))
sns.scatterplot(data=cts, x='X', y='Y', size='NumberOfPlanets', sizes=(50,500), legend=False)
sns.lineplot(data=cts, x='X', y='Y',estimator='max', color='red')
plt.show()

结果:

enter image description here

任何想法吗?
编辑:
如果我尝试使用pyplot,它也不起作用: 代码:
plt.plot(cts['X'], cts['Y'])

结果:

enter image description here

我需要一条连接最近点的直线(基本上就是图像一所呈现的,但是用同样的实线)。

你可能想要使用sns.lineplot(..., estimator='max', ci=None)来抑制默认显示的置信区间。 - JohanC
2
我已经编辑了带有可重现数据的帖子。 - dtBane
ci=None 没有帮助。褪色的线完全消失了。 - dtBane
是的,它应该消失,因为你只显示了 'max'sns.lineplot 每个 x 只使用一个 y 值。如果你只想连接你的点,你可以直接在 seaborn 散点图上使用 matplotlib 的线性图。例如:plt.plot(cts['X'], cts['Y'], color='red', lw=2) - JohanC
如果我使用 plt.plot(cts['X'], cts['Y']),仍然不能得到我想要的结果,因为它会连接到中间点,然后连接到上下各一个点。我需要一条连接最近点的线。请参考编辑过的帖子中的图片。 - dtBane
1个回答

1

好的,我终于弄清楚了。lineplot 出现混乱的原因是数据没有被正确地排序。当我按照“Y”值对数据框进行排序后,结果令人满意。

data = {'X': [13, 13, 13, 12, 11], 'Y':[14, 11, 13, 15, 20], 'NumberOfPlanets':[2, 5, 2, 1, 2]}
cts = pd.DataFrame(data=data)
cts = cts.sort_values('Y')

plt.figure(figsize=(10,10))
plt.scatter(cts['X'], cts['Y'], zorder=1)
plt.plot(cts['X'], cts['Y'], zorder=2)
plt.show()

现在它正常工作了。我还在其他类似的散点图上进行了测试,一切都很好 :) 谢谢!

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