如何自定义Holoviews中hv.Arrow注释的长度、坐标及文本等参数
解决方法
HoloViews 的 Arrow 元素支持直接通过 .opts() 方法传入底层 Bokeh 渲染引擎的所有箭头、文本样式参数,无需单独调用 Bokeh 接口即可完成所有自定义需求。
可直接运行的修改示例代码
import numpy as np import holoviews as hv hv.extension('bokeh') points = [(1*i, np.sin(.1*i)*10) for i in range(100)] curve = hv.Curve(points) # 自定义箭头及关联文本 custom_arrow = hv.Arrow( x=45, y=-5, # 箭头指向的终点坐标 text='Inflection', direction='v' # 箭头指向:v向下、^向上、<向左、>向右 ).opts( # 箭头样式参数 arrowhead_length=20, # 箭头头部长度(像素) arrowhead_width=10, # 箭头头部宽度(像素) line_width=2, # 箭头杆线条宽度 line_color='crimson', # 箭头杆颜色 color='crimson', # 箭头头部颜色 line_dash='solid', # 箭头杆线型,可选dashed/dotted等 offset=20, # 文本距离箭头端点的距离,调大即可增加箭头总长度 # 关联文本样式参数 text_font_size='13pt', text_color='crimson', text_font_style='italic', text_font_weight='bold', text_alpha=0.9, text_rotation=0 # 文本旋转角度,单位为度 ) # 叠加曲线和箭头显示 curve * custom_arrow
常见需求对应调整方式
- 调整箭头总长度:修改
offset参数,数值越大,文本离箭头指向点越远,箭头整体长度越长 - 调整起止坐标:
x、y参数为箭头指向的终点坐标,起点会根据方向和offset自动计算;如果需要完全自定义起止坐标,可改用hv.Segments绘制箭杆再搭配箭头头元素实现 - 调整箭头其他属性:所有Bokeh箭头注释支持的参数都可以直接传入,比如设置
arrowhead='open'即可改成空心箭头 - 调整文本样式:所有
text_前缀的参数都可用于自定义文本,包括字体、大小、颜色、粗细、透明度、旋转角度等
内容的提问来源于stack exchange,提问作者bkeesey
相关产品推荐
相关产品推荐

