Holoviews меняет цветовую карту даташадера

Я пытаюсь изменить цветовую карту, используемую datashader.

Я пробовал это:

datashade(scatter, cmap='Reds')

Где scatter - это элемент hv.Scatter. Это не работает, потому что datashader ожидает итерацию или функцию, возвращающую цвета. Таким образом, это работает:

datashade(scatter, cmap=['blue'])

Итак, как я могу взять палитру 'Reds' и преобразовать ее во что-то, что может использовать даташейдер?

Спасибо.


person Cris    schedule 10.06.2019    source источник


Ответы (3)


Верно; вы не можете передать строковое имя цветовой карты в аргумент Datashader cmap, потому что Datashader интерпретирует одну строку как имя одного цвета, создавая из нее цветовую карту, устанавливая для каналов R, G, B этот цвет, а затем изменяя альфа-канал. Если вам нужна палитра, передайте либо список цветов (используемый Bokeh для своих палитр), либо объект палитры Matplotlib (не имя строки) в cmap:

from matplotlib import cm
datashade(scatter, cmap=cm.Reds)
person James A. Bednar    schedule 10.06.2019
comment
Хорошо, в этом есть смысл. Я знаю, что Seaborn также предоставляет этот тип цветовых карт, и я думаю, что Bokeh делает то же самое. В любом случае я могу получить доступ к цветовой карте здесь: holoviews.org/user_guide/Colormaps.html - person Cris; 11.06.2019
comment
для боке можно делать: из боке.палитры import Magma256; datashade (scatter, cmap = Magma256) Доступные палитры боке можно найти здесь: docs.bokeh.org/en/latest/docs/reference/ - person Sander van den Oord; 21.01.2020

Чтобы выбрать любую цветовую карту, доступную для Holoviews, используйте следующий код:

from holoviews.plotting.util import process_cmap

datashade(scatter, cmap=process_cmap("Magma", provider="bokeh"))

Измените "Magma" и "Bokeh" на любую из поддерживаемых цветовых карт (спасибо @Chris за ссылку).


Просьба: было бы неплохо, если бы opts параметра, заданные для графиков Holoviews, передавались автоматически, если datashade их поддерживает, как того требует эта проблема GitHub: https://github.com/holoviz/holoviews/issues/4125.

person NumesSanguis    schedule 21.01.2020

Вы также можете использовать библиотеку hvplot, которая построена на основе HoloViews , чтобы создавать графики, использовать даташейдер и изменять цветовое отображение, и все это удобным способом:

import numpy as np
import pandas as pd
import hvplot.pandas

df = pd.DataFrame({
    'x': np.random.normal(size=100000),
    'y': np.random.normal(size=100000),
})

# use keyword datashade=True to turn on datashading
# use keyword cmap to change the default colormap
df.hvplot.scatter(
    x='x', 
    y='y', 
    datashade=True, 
    cmap='Magma',
)


Цветовые карты можно найти здесь:
http://holoviews.org/user_guide/Colormaps.html

Результирующий график:  использование hvplot для изменения сопоставления цветов даташадера

person Sander van den Oord    schedule 21.01.2020