4

我正在尝试更改数据着色器使用的颜色图。

我试过这个:

datashade(scatter, cmap='Reds')

元素scatter在哪里。hv.Scatter这不起作用,因为 datashader 需要一个可迭代的或返回颜色的函数。因此,这有效:

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

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

谢谢你。

4

3 回答 3

4

正确的; 您不能将颜色图的字符串名称传递给 Datashader 的cmap参数,因为 Datashader 将单个字符串解释为单一颜色的名称,通过将 R、G、B 通道设置为该颜色然后改变阿尔法通道。如果您需要颜色图,请将颜色列表(Bokeh 用于其调色板)或 Matplotlib 颜色图对象(不是字符串名称)传递给cmap

from matplotlib import cm
datashade(scatter, cmap=cm.Reds)
于 2019-06-10T20:03:19.513 回答
1

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

from holoviews.plotting.util import process_cmap

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

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


请求:如果opts提供给 Holoviews 绘图的参数能够按照datashadeGitHub 问题的要求自动传输(如果支持),那就太好了:https ://github.com/holoviz/holoviews/issues/4125 。

于 2020-01-21T08:39:17.717 回答
1

您还可以使用构建在 HoloViews 之上的库 hvplot创建绘图、使用数据着色器并更改颜色映射,所有这些都以方便的方式进行:

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 更改数据着色器颜色映射

于 2020-01-21T09:10:59.357 回答