使用Plotly后端的Holoviews热图如何设置colormap中点
解决方案
实现色阶中点设置的两种方法
方法1:使用Holoviews通用对称色阶参数
如果你的需求是让发散色阶以0为中点对称分布,直接开启symmetric=True参数即可,这是最简便的写法:
import holoviews as hv hv.extension('plotly') # 声明使用Plotly后端 hv.HeatMap([(0,0,-10),(0,1,-9),(1,0,0),(1,1,2)]).opts( cmap="RdBu", symmetric=True )
该参数会自动匹配你的数据极值,将色阶范围调整为以0为中点的对称区间,完全匹配发散色阶的使用场景。
方法2:透传Plotly原生参数自定义中点
如果需要自定义中点数值、不需要色阶范围完全对称,可以直接透传Plotly底层的cmid参数实现需求,所有Plotly原生支持的配置都可以通过plotly字典参数传入:
hv.HeatMap([(0,0,-10),(0,1,-9),(1,0,0),(1,1,2)]).opts( cmap="RdBu", plotly=dict( coloraxis=dict( cmid=0 # 直接指定色阶中点为0 ) ) )
相关疑问解答
- Holoviews的Plotly后端没有调用
px.imshow,它是直接基于Plotly的graph_objects.Heatmap接口实现绘图,因此不存在透传Plotly Express参数的逻辑。 - 所有未在Holoviews官方文档中列出的后端原生参数,都可以通过上述
plotly字典的方式透传生效,不需要依赖Holoviews自身的参数封装。
内容的提问来源于stack exchange,提问作者Gere
相关产品推荐
相关产品推荐

