Holoviews更改Datashader的颜色映射

4

我正在尝试更改datashader使用的颜色映射。

我尝试了这个:

datashade(scatter, cmap ='Reds')

其中scatter是一个hv.Scatter元素。这不起作用,因为datashader期望一个可迭代对象或返回颜色的函数。因此,这样可以工作:

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

那么,我怎么把'Reds'颜色映射转换成datashader可以使用的东西呢?

谢谢。

3个回答

4

没错,你不能将一个调色板的字符串名称传递给 Datashader 的 cmap 参数,因为 Datashader 会将单个字符串解释为单个颜色的名称,并通过将 R、G、B 通道设置为该颜色并变化 alpha 通道来构建一个调色板。如果想使用调色板,可以将一组颜色(例如 Bokeh 的调色板所使用的方式)或 Matplotlib 调色板对象(而不是字符串名称)传递给 cmap 参数:

from matplotlib import cm
datashade(scatter, cmap=cm.Reds)

好的,那很有道理。我知道Seaborn也提供了这种类型的颜色映射,而且我认为Bokeh也是一样的。我可以在这里访问颜色映射吗:http://holoviews.org/user_guide/Colormaps.html - Cris
对于bokeh,您可以执行以下操作:from bokeh.palettes import Magma256; datashade(scatter, cmap=Magma256) 可在此处找到可用的bokeh调色板:https://docs.bokeh.org/en/latest/docs/reference/palettes.html#large-palettes - Sander van den Oord

1
要从Holoviews可用的任何色图中进行选择,请使用以下代码:
from holoviews.plotting.util import process_cmap

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

"Magma""Bokeh"更改为任何支持的颜色映射(感谢@Chris提供的链接)。


请求:如果datashade支持它们,那么给定给Holoviews图的opts参数应该自动转移,正如GitHub问题https://github.com/holoviz/holoviews/issues/4125所要求的那样。

1
你还可以使用基于HoloViews构建的库hvplot来创建图表,使用datashader并更改颜色映射,一切都非常方便:
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更改datashader颜色映射


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接