我正在尝试更改datashader使用的颜色图。
我尝试过:
datashade(scatter, cmap='Reds')
其中scatter
是hv.Scatter
元素。这是行不通的,因为datashader需要可迭代的函数或返回颜色的函数。因此,这有效:
datashade(scatter, cmap=['blue'])
那么我该如何获取'Reds'
色彩图并将其转换为datashader可以使用的东西?
谢谢。
答案 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',
)