Нарисуйте еще одну точку на вершине Swarmplot - PullRequest
1 голос
/ 01 апреля 2020

Я хочу построить «выделенную» точку на вершине Swarmplot, как это

enter image description here

Swarmplot не имеет оси Y, поэтому я понятия не имею, как изобразить эту точку.

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

1 Ответ

1 голос
/ 01 апреля 2020

Этот подход основан на знании индекса точки данных, которую вы хотите выделить sh, но он должен работать - хотя, если у вас есть несколько swarmplots на одном экземпляре Axes, он станет немного более сложным.

import matplotlib.pyplot as plt
import matplotlib
import seaborn as sns
sns.set(style="whitegrid")
tips = sns.load_dataset("tips")
ax = sns.swarmplot(x=tips["total_bill"])
artists = ax.get_children()
offsets = []
for a in artists:
    if type(a) is matplotlib.collections.PathCollection:
        offsets = a.get_offsets()
        break
plt.scatter(offsets[50,0], offsets[50,1], marker='o', color='orange', zorder=10)

enter image description here

...