我已经绘制了一个海洋分布图。我的数据包含5000个数据点。通过查看情节,我肯定看不到5000点。因此,我敢肯定,seaborn散点图函数会执行某种采样。我想知道图中每个点代表多少个数据点?如果取决于代码,则代码如下:
g = sns.scatterplot(x=data['x'], y=data['y'],hue=data['P'], s=40, edgecolor='k', alpha=0.8, legend="full")
没有任何东西可以真正暗示我Seaborn正在对您的数据进行采样。但是,您可以确认g
轴上的数据。查询轴的子级以获取PathCollection(散点图)对象:
g.get_children()
它可能是列表中返回的第一项。从那里可以使用get_offsets
检索数据并检查其形状。
g.get_children()[0].get_offsets().shape
据我所知,没有进行采样。在您发布的图片上,您可以看到大多数数据点只是重叠的,这可能就是您看不到5000个点的原因。用更少的点尝试,您会发现它们都被绘制了。
为了检查Seaborn的散点图是否消除了点,这里是一种查看5000个不同点的方法。似乎没有任何遗漏。
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
x = np.linspace(1, 100, 100)
y = np.linspace(1, 50, 50)
X, Y = np.meshgrid(x, y)
Z = (X * Y) % 25
X = np.ravel(X)
Y = np.ravel(Y)
Z = np.ravel(Z)
sns.scatterplot(x=X, y=Y, s=15, hue=Z, palette=plt.cm.plasma, legend=False)
plt.show()