Seaborn - 具有平均 Y 轴的散点图

Seaborn - ScatterPlot with Average Y-axis

我已经在 seaborn 散点图中编写了以下代码来创建视觉效果

sns.scatterplot(x="Year_Birth", y="NumStorePurchases", data=md)

我得到以下格式的图

我现在需要 Y 轴的平均值,并希望将绘图调整为如下图所示

我试过在估算器中使用 np.mean,但没有成功。有没有做错什么?如何实现?

如果每个 x-value 只需要一个 y-value,则可以创建一个 sns.pointplot(...,orient='v')。请注意,pointplot 使用分类轴,将 x-value 视为字符串,内部编号为 0,1,2,...。默认情况下,这些 x-value 中的每一个都将被标记。 MultipleLocator 可用于仅显示例如每 10.

要抑制连接所有值的线,请使用 join=False,而 ci=None 抑制置信区间的错误线。

这是一个例子:

from matplotlib import pyplot as plt
from matplotlib.ticker import MultipleLocator
import seaborn as sns
import pandas as pd
import numpy as np

md = pd.DataFrame({"Year_Birth": np.random.randint(1940, 2000, 200),
                   "NumStorePurchases": np.random.randint(0, 14, 200)})
plt.figure(figsize=(12, 4))
sns.set_style('darkgrid')
ax = sns.pointplot(x="Year_Birth", y="NumStorePurchases", order=range(1900, 2020),
                   orient='v', join=False, ci=None, color='cornflowerblue', data=md)
ax.xaxis.set_major_locator(MultipleLocator(10))
plt.tight_layout()
plt.show()