Как вручную установить пределы цветовой полосы holoview?

Когда я пытаюсь ввести свой собственный тикер...

В предыдущей камере...

ticker = FixedTicker(ticks=range(0, 10))

В следующей ячейке...

%%opts HeatMap [colorbar=True colorbar_opts={'ticker': ticker}]

Я получил...

TypeError [Call holoviews.ipython.show_traceback() for details]
MetaModel object got multiple values for keyword argument 'ticker'

Вот трассировка...

  File "/Users/ahuang11/anaconda3/envs/tf/lib/python3.6/site-packages/holoviews/plotting/bokeh/element.py", line 757, in _init_glyphs
    renderer, glyph = self._init_glyph(plot, mapping, properties)

  File "/Users/ahuang11/anaconda3/envs/tf/lib/python3.6/site-packages/holoviews/plotting/bokeh/element.py", line 1201, in _init_glyph
    self._draw_colorbar(plot, self.handles['color_mapper'])

  File "/Users/ahuang11/anaconda3/envs/tf/lib/python3.6/site-packages/holoviews/plotting/bokeh/element.py", line 1100, in _draw_colorbar
    **dict(opts, **self.colorbar_opts))

TypeError: MetaModel object got multiple values for keyword argument 'ticker'

person Andrew    schedule 06.02.2018    source источник


Ответы (1)


Цветовой диапазон и все остальные диапазоны можно задать для Dimension объектов HoloViews Elements. Когда вы объявляете HeatMap, создаются три (или более) измерения. Первые два — это ключевые измерения (kdims), соответствующие осям x и y тепловой карты. Во-вторых, есть два или более измерения значений (vdims), первое из которых сопоставлено с цветовым диапазоном. Диапазоны измерений могут быть явно объявлены при построении объекта. Здесь мы устанавливаем цвет измерения «z», который должен быть именем любого столбца, который вы рисуете:

hv.HeatMap(..., vdims=hv.Dimension('z', range=(0, 10)))

Вы также можете использовать интерфейс redim для переопределения диапазона постфактум. Это также будет работать, когда у вас есть коллекция объектов, поскольку она будет рекурсивно устанавливать диапазон для всех объектов, содержащих это измерение, и возвращать новый объект. Это выглядит примерно так:

heatmap = hv.HeatMap(...)
redimensioned_heatmap = heatmap.redim.range(z=(0, 10))
person philippjfr    schedule 07.02.2018
comment
Спасибо, это сработало! Есть ли способ настроить количество отображаемых галочек? - person Andrew; 07.02.2018
comment
Для пользователей hvplot: измерение значения не «z», а то, что вы установили в C=<???>. Вы можете проверить имя с помощью print(heatmap.vdims). Затем вы можете изменить диапазон с помощью heatmap.redim.range(my_col=(0, 10)) или heatmap.redim.range(**{str(heatmap.vdims[0]):(0, 10)}). Это стоило мне много времени, чтобы понять. - person magum; 03.04.2019
comment
Вау, @magnum, большое спасибо, это стоило мне и нескольких часов. :/ - person K.-Michael Aye; 13.08.2019
comment
В настоящее время я думаю, что вы можете сделать hv_obj.opts(clim=(0, 10)) - person Andrew; 14.08.2019
comment
Хотелось бы, чтобы clim работал во всех случаях... Неожиданная опция 'clim' для типа AdjointLayout во всех расширениях. Похожие варианты не найдены. - person K.-Michael Aye; 13.01.2020
comment
@K.-MichaelAye Вам нужно настроить параметр на правильный тип, если вы устанавливаете его в AdjointLayout, неясно, для какого элемента вы пытаетесь его установить. Поэтому, если вы пытаетесь настроить таргетинг на HeatMap, вы должны использовать hv_obj.opts(hv.opts.HeatMap(clim=(0, 10))) или, если нет наложений, вы также можете использовать `hv_obj.apply.opts(clim=(0, 10)) - person philippjfr; 13.01.2020
comment
Спасибо! У меня аналогичный вопрос: как установить центр расходящейся палитры? например, если вы хотите установить 0 в белый цвет, отрицательные значения станут темно-синими до -10, а положительные значения до 5? Таким образом, я ищу параметры, аналогичные параметрам seaborn min, vmax и center: seaborn. pydata.org/generated/seaborn.heatmap.html - person Maxime Beau; 23.06.2020
comment
В настоящее время нет центрального аргумента, но это похоже на хороший запрос функции. - person philippjfr; 24.06.2020