如何在Holoviews的GridSpace/GridMatrix中显示全周内轴?
如何在Holoviews GridSpace/GridMatrix中显示所有内轴
你现在碰到的情况很常见:当给GridSpace设置shared_xaxis=True和shared_yaxis=True时,它只会保留最底部的x轴和最左侧的y轴,中间子图的内轴都会被自动隐藏,和你描述的实际效果一致。要实现每个子图都显示独立轴的期望效果,我们可以通过以下方式调整:
核心思路
默认的轴共享逻辑会隐藏重复的内轴,所以我们需要关闭这个自动隐藏的行为,同时确保每个子图的轴都处于可见状态。
具体实现步骤
- 移除全局轴隐藏配置:不要在GridSpace的
opts里设置xaxis=None和yaxis=None,这两个参数会直接让所有轴消失; - 关闭轴共享的自动隐藏:将
shared_xaxis和shared_yaxis设为False,这样每个子图都会独立渲染自己的轴; - (可选)统一轴范围:如果希望所有子图的轴对齐更美观,可以给每个子图设置相同的
xlim和ylim,保证轴范围一致。
修改后的示例代码
import numpy as np import holoviews as hv hv.extension('bokeh') # 加载Bokeh渲染器,确保图表正常显示 def sine_curve(phase, freq): xvals = [0.1* i for i in range(100)] curve = hv.Curve((xvals, [np.sin(phase+freq*x) for x in xvals])) # 为每个子图设置轴可见,并统一轴范围 return curve.opts(xaxis='visible', yaxis='visible', xlim=(0, 10), ylim=(-1.1, 1.1)) phases = [0, np.pi/2, np.pi, 3*np.pi/2] frequencies = [0.5, 0.75, 1.0, 1.25] curve_dict_2D = {(p,f): sine_curve(p,f) for p in phases for f in frequencies} # 创建GridSpace并关闭轴共享的自动隐藏 hv.GridSpace(curve_dict_2D, kdims=['phase', 'frequency']).opts( shared_xaxis=False, shared_yaxis=False )
效果解释
运行这段代码后,GridSpace里的每个子图都会显示自己的x轴和y轴,完全符合你期望的效果。如果不需要统一轴范围,只需要去掉xlim和ylim的配置即可,每个子图会根据自身数据自动调整轴的范围。
内容的提问来源于stack exchange,提问作者suyang
相关产品推荐
相关产品推荐

