Добавьте один конкретный маркер точки данных на коробчатую диаграмму или диаграмму скрипки (используя holoviews / hvplot)

Я создал скрипичный график из 1 столбца в моем фрейме данных.
Теперь я хотел бы показать, где находится одна конкретная точка данных (выброс) по сравнению с этим скрипичным графиком.

Ниже я создал несколько примеров данных и хотел бы построить 1 конкретный выброс, например точку данных со значением 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)


Текущий график без конкретной точки данных:  сценарий скрипки без конкретной точки данных вверху


person Sander van den Oord    schedule 16.12.2019    source источник


Ответы (1)


Вам необходимо наложить точечную диаграмму на значение точки данных. на ваш скрипичный сюжет.
По сути, это помещает диаграмму рассеяния поверх скрипичного сюжета, и это можно сделать с помощью символа *.

Ось 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


Результирующий график:
 скрипичный график с диаграммой рассеяния из 1 точки выброса

person Sander van den Oord    schedule 16.12.2019