首页 > 解决方案 > 在 swarmplot 上绘制另一个点

问题描述

我想像这样在 swarmplot 上绘制一个“突出显示”的点

在此处输入图像描述

swarmplot 没有 y 轴,所以我不知道如何绘制该点。

import seaborn as sns
sns.set(style="whitegrid")
tips = sns.load_dataset("tips")
ax = sns.swarmplot(x=tips["total_bill"])

标签: pythonmatplotlibdata-visualizationseabornswarmplot

解决方案


如果为 y 轴添加分组变量(使它们显示为单个组),则可以使用 hue 属性突出显示一个点,然后使用另一个变量突出显示您感兴趣的点。

然后您可以删除 y 标签以及样式和图例。

import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style="whitegrid")

# Get data and mark point you want to highlight
tips = sns.load_dataset("tips")
tips['highlighted_point'] = 0
tips.loc[tips[tips.total_bill > 50].index, 'highlighted_point'] = 1

# Add holding 'group' variable so they appear as one
tips['y_variable'] = 'testing'

# Use 'hue' to differentiate the highlighted point
ax = sns.swarmplot(x=tips["total_bill"], y=tips['y_variable'], hue=tips['highlighted_point'])

# Remove legend
ax.get_legend().remove()

# Hide y axis formatting 
ax.set_ylabel('')
ax.get_yaxis().set_ticks([])
plt.show()

输出图


推荐阅读