Python 在Swarmlot顶部绘制另一个点

Python 在Swarmlot顶部绘制另一个点,python,matplotlib,data-visualization,seaborn,swarmplot,Python,Matplotlib,Data Visualization,Seaborn,Swarmplot,我想在Swarmlot上面画一个“突出显示”的点,像这样 Swarmlot没有y轴,所以我不知道如何绘制该点 import seaborn as sns sns.set(style="whitegrid") tips = sns.load_dataset("tips") ax = sns.swarmplot(x=tips["total_bill"]) 这种方法的前提是知道要突出显示的数据点的索引,但它应该可以工作-尽管如果在单个轴上有多个Swarmlot实例,它会变得稍微复杂一些 导入mat

我想在Swarmlot上面画一个“突出显示”的点,像这样

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

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

这种方法的前提是知道要突出显示的数据点的索引,但它应该可以工作-尽管如果在单个
轴上有多个Swarmlot
实例,它会变得稍微复杂一些

导入matplotlib.pyplot作为plt
导入matplotlib
导入seaborn作为sns
sns.set(style=“whitegrid”)
tips=sns.load_数据集(“tips”)
ax=sns.swarmlot(x=tips[“总账单”])
艺术家=ax.get_children()
偏移量=[]
对于一位艺术家:
如果类型(a)为matplotlib.collections.PathCollection:
偏移量=a.获取偏移量()
打破
plt.散射(偏移量[50,0],偏移量[50,1],标记为“o”,颜色为“橙色”,zorder=10)

如果为y轴添加分组变量(使其显示为单个组),然后使用另一个变量高亮显示感兴趣的点,则可以使用“色调”属性高亮显示点

然后可以删除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()

还有一个问题。你怎么知道那一点的数据?我想知道“50”点在原始数据中的位置。
offsets=a.get_offsets()
存储打印点的位置-关键是,这些点的存储顺序与打印顺序相同。因此,
offset[50]
的数据应该与
tips[“total_bill”]的数据相同。值[50]
。没有其他方法可以从swamploti中回退数据我认为get_offsets()中的索引是排序列表的索引?原始数据不正确sorted@ChrisMaverick您可能是对的,我可能会将其与
matplotlib.Line2D.get_data()
混淆,尽管文档没有明确说明……我应该对原始数据或其他内容进行排序吗?可能只是使用特定的x值(
tips[“total_bill”]
)y值为零就足够了。散射点按从左到右的顺序排列。或者,在调用
swarmlot
之前,您可以通过此列对整个数据帧进行排序。尝试对数据进行排序。我有很多子地块,每个子地块都需要排序,所以有点棘手