You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:17:37