Python 将一个特定的数据点标记添加到boxplot或violinplot(使用HoloView/hvplot)

Python 将一个特定的数据点标记添加到boxplot或violinplot(使用HoloView/hvplot),python,holoviews,hvplot,holoviz,Python,Holoviews,Hvplot,Holoviz,我在数据帧中绘制了一个1列的violinplot。 现在,我想展示一个特定数据点(离群值)与violinplot的比较位置。 下面我创建了一些样本数据,我想绘制一个特定的异常值,例如一个值为20的数据点。 如何将带有标记的数据点添加到绘图中? 问题是我知道20的值,它是x轴,但我不知道y轴的值,它似乎是“匿名的”。我试图用点(无,20)覆盖散点图,但没用 示例代码: # import libaries import numpy as np import pandas as pd import

我在数据帧中绘制了一个1列的violinplot。
现在,我想展示一个特定数据点(离群值)与violinplot的比较位置。

下面我创建了一些样本数据,我想绘制一个特定的异常值,例如一个值为20的数据点。
如何将带有标记的数据点添加到绘图中?

问题是我知道20的值,它是x轴,但我不知道y轴的值,它似乎是“匿名的”。我试图用点(无,20)覆盖散点图,但没用

示例代码:

# import libaries
import numpy as np
import pandas as pd
import hvplot
import hvplot.pandas
import holoviews as hv
hv.extension('bokeh')

# create sample_data
sample_data = np.random.poisson(lam=50, size=100)
df = pd.DataFrame(sample_data, columns=['col1'])

# create violin plot with hvplot:
violin_plot = df.hvplot.violin(ylim=(-5, 100), invert=True)

# or create it with holoviews:
violin_plot = hv.Violin(df, vdims=['col1'])
violin_plot.opts(ylim=(-5, 100), invert_axes=True, width=500)

没有特定数据点的当前绘图:

您需要在小提琴图上绘制一个带有数据点值的散点图
这基本上是把散点图放在小提琴图的顶部,这可以用*符号来完成。

这里的y轴看起来是“匿名的”,但关键在于它实际上有值“”,因此它是一个空字符串。
因此,如果要绘制值20,则数据点为(“”,20)。


解决方案代码:

# x-axis is an empty string, so create a scatter plot of 1 datapoint with value ('', 80)
scatter_point = hv.Scatter(('', 20)).opts(color='red', size=10)

# put your scatter plot with 1 datapoint on top of your violin plot using the * symbol
violin_plot * scatter_point

结果图: