我正在尝试更改datashader使用的颜色映射。
我尝试了这个:
datashade(scatter, cmap ='Reds')
其中scatter
是一个hv.Scatter
元素。这不起作用,因为datashader期望一个可迭代对象或返回颜色的函数。因此,这样可以工作:
datashade(scatter, cmap = ['blue'])
那么,我怎么把'Reds'
颜色映射转换成datashader可以使用的东西呢?
谢谢。
我正在尝试更改datashader使用的颜色映射。
我尝试了这个:
datashade(scatter, cmap ='Reds')
其中scatter
是一个hv.Scatter
元素。这不起作用,因为datashader期望一个可迭代对象或返回颜色的函数。因此,这样可以工作:
datashade(scatter, cmap = ['blue'])
那么,我怎么把'Reds'
颜色映射转换成datashader可以使用的东西呢?
谢谢。
没错,你不能将一个调色板的字符串名称传递给 Datashader 的 cmap
参数,因为 Datashader 会将单个字符串解释为单个颜色的名称,并通过将 R、G、B 通道设置为该颜色并变化 alpha 通道来构建一个调色板。如果想使用调色板,可以将一组颜色(例如 Bokeh 的调色板所使用的方式)或 Matplotlib 调色板对象(而不是字符串名称)传递给 cmap
参数:
from matplotlib import cm
datashade(scatter, cmap=cm.Reds)
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所要求的那样。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',
)