如何在Holoviews中全局设置show_grid=True选项?
全局开启Holoviews图表的网格显示(Bokeh后端)
当然可以全局开启show_grid=True,无需为每个图表单独设置,主要有两种高效方式:
方式1:指定特定图表类型
如果只需要给Curve、Scatter等几个特定类型开启网格,直接用hv.opts.defaults()逐个配置:
import holoviews as hv hv.extension('bokeh') # 设置全局默认选项 hv.opts.defaults( hv.opts.Curve(show_grid=True, width=600, height=400), hv.opts.Scatter(show_grid=True, width=600, height=400), # 按需添加其他类型,比如Area、Bar等 ) # 测试示例 x = [1,2,3,4] y = [2,4,6,8] # 创建的Curve和Scatter会自动应用全局网格设置 curve = hv.Curve((x,y), xlabel='time in sec', ylabel='volts', title='My Curve') scatter = hv.Scatter((x,y), xlabel='time in sec', ylabel='volts', title='My Scatter') hv.Layout(curve + scatter).cols(2)
方式2:批量覆盖所有XY类图表
Curve、Scatter等绝大多数常见的XY图表都继承自Chart类,直接给Chart设置全局选项,就能一次性覆盖所有子类:
import holoviews as hv hv.extension('bokeh') # 全局开启所有Chart子类的网格显示 hv.opts.defaults( hv.opts.Chart(show_grid=True, width=600, height=400) ) # 测试示例 x = [1,2,3,4] y = [2,4,6,8] curve = hv.Curve((x,y), xlabel='time in sec', ylabel='volts', title='My Curve') scatter = hv.Scatter((x,y), xlabel='time in sec', ylabel='volts', title='My Scatter') area = hv.Area((x,y), xlabel='time in sec', ylabel='volts', title='My Area') # Curve、Scatter、Area都会自动显示网格 hv.Layout(curve + scatter + area).cols(3)
注意事项
- 全局设置必须在创建图表之前执行,否则不会对已创建的图表生效。
- 如果某个图表需要单独关闭网格,只需在该图表的
options()方法中设置show_grid=False,即可覆盖全局配置:# 单独关闭某个图表的网格 curve.options(show_grid=False)
内容的提问来源于stack exchange,提问作者Hitesh Rahangdale
相关产品推荐
相关产品推荐

