Связывание участков HoloViews с настройками Bokeh - PullRequest
0 голосов
/ 05 апреля 2019

Я борюсь с некоторыми из тонких точек сложных графиков HoloViews, особенно связанных графиков, настраивающих внешний вид шрифтов и точек данных.

Используя следующий код, я могу создать этот график , который имеет большинство функций, которые я хочу, но несколько озадачен:

  • Я хочу один маргинал для всего набора графиков, связанных с 'ewr' (с отдельными маргиналами для каждой из других осей), в идеале слева от набора; но мои попытки получить только одно из моих определений s1 и s2 не сработали, и я ничего не могу найти в документации о перемещении маргинала влево (или, если на то пошло, снизу).
  • Я хочу иметь возможность определять всплывающие подсказки, которые используют столбцы из моих данных, которые не отображаются на графиках. Я могу видеть один способ сделать это, как показано в закомментированном альтернативном определении для s1, но это не связывает сюжет, который он создает, с другими. Как создать связанные графики с всплывающими подсказками с элементами, которых нет на этих графиках?

Для справки, используемые данные доступны здесь (преобразуется в приведенном ниже коде в кадр данных Pandas, df).


import holoviews as hv
from holoviews import dim, opts

hv.extension('bokeh')

renderer = hv.renderer('bokeh') 
from bokeh.models import HoverTool
from holoviews.plotting.links import DataLink

TOOLS="crosshair,pan,wheel_zoom,zoom_in,zoom_out,box_zoom,undo,redo,reset,tap,save,box_select,poly_select,lasso_select".split(",") 
ht = HoverTool(
        tooltips=[('Name', '@{name}'), ('EWR', '@{ewr}{%0.2f}'), ('Win Rate', '@{winrate}{%d}')],
        formatters={'ewr' : 'printf', 'winrate' : 'printf'})

point_opts = opts.Scatter(fill_color='black', fill_alpha=0.1, line_width=1, line_color='gray', size=5, tools=TOOLS+[ht])
hist_opts = opts.Histogram(fill_color='gray', fill_alpha=0.9, line_width=1, line_color='gray', tools=['box_select'], labelled=[None, None])

#s1 = hv.Scatter(df[['kfai','ewr','name','winrate']]).hist(num_bins=51, dimension='kfai')
s1 = hv.Scatter(df, 'kfai','ewr').hist(num_bins=51, dimension='kfai')
s2 = hv.Scatter(df, 'aerc', 'ewr').hist(num_bins=51, dimension=['aerc',None])
s3 = hv.Scatter(df, 'winrate', 'ewr').hist(num_bins=51, dimension=['winrate','ewr'])
p = (s1 + s2 + s3).opts(point_opts, hist_opts, opts.Layout(shared_axes=True, shared_datasource=True))

renderer.save(p, '_testHV')
...