Seaborn:剪切显示

Seaborn : cut display

我正在做小提琴图,但我有极端的数据点,因此我得到了类似的东西:

sns.violinplot(x = "x_axis", y = "y_axis", hue="groups", data = my_data, split = True)

但是,如果我在 Y 轴上剪切数据以排除 > 200,就像这样:

cut_data = my_data[my_data.y_axis < 200]
sns.violinplot(x = "x_axis", y = "y_axis", hue="groups", data = cut_data, split = True)

我得到这样的结果:

但是,当然,这是不希望的,因为就基础数据而言,第二个图与第一个图不同。 所以我的问题是:有没有一种方法可以绘制所有数据的图表,但图表只显示 Y 轴上的 0 到 200?

您可以通过在 matplotlib 轴对象上设置 y 轴限制来截断绘图本身:

#create a sample data set
df = pd.DataFrame(np.random.gamma(1, 100, 10000), columns=['a'])
df['Group'] = np.random.choice(['group 1', 'group 2'], 10000)

#plot and the truncate the axis
fig, ax = plt.subplots(1)
sns.violinplot(x='Group', y='a', data=df, ax=ax)
ax.set_ylim(0, 200)