Holoviews更改数据着色器颜色图

时间:2019-06-10 13:08:23

标签: python colormap holoviews datashader

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

我尝试过:

datashade(scatter, cmap='Reds')

其中scatterhv.Scatter元素。这是行不通的,因为datashader需要可迭代的函数或返回颜色的函数。因此,这有效:

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

那么我该如何获取'Reds'色彩图并将其转换为datashader可以使用的东西?

谢谢。

3 个答案:

答案 0 :(得分:1)

正确;您不能将颜色映射的字符串名称传递给Datashader的cmap参数,因为Datashader会将单个字符串解释为一种颜色的名称,通过将R,G,B通道设置为该颜色来构造颜色映射颜色,然后更改Alpha通道。如果需要颜色图,则将颜色列表(由Bokeh用于其调色板)或将Matplotlib颜色图对象(而不是字符串名称)传递给cmap

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

答案 1 :(得分:1)

要从Holoviews可用的任何颜色表中进行选择,请使用以下代码:

from holoviews.plotting.util import process_cmap

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

"Magma""Bokeh"更改为any of the supported colormaps(感谢@Chris提供链接)。


请求:如果opts支持{Holviews plots}的参数datashade根据GitHub问题https://github.com/holoviz/holoviews/issues/4125的要求而自动传输,那就很好了。

答案 2 :(得分:1)

您还可以使用库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

结果图: using hvplot to change datashader color mapping