HQChart使用教程30-K线图如何对接第3方数据11-如何绘制多组自定义图标

使用自定义svg图标显示再指标上,这里我们只支持svg图片,其他的格式图片不支持。
示例地址:https://jones2000.github.io/HQChart/webhqchart.demo/samples/kline_MULTI_SVGICON.html

效果图

在这里插入图片描述

步骤

1.创建iconfont文件

这里我使用阿里巴巴矢量图标库来创建几个svg图标。Famail名字为js-iconfont, 导入几个图标
在这里插入图片描述
在这里插入图片描述

2. 配置一个第3方指标

这里我新配置一个指标名为‘SVG图标标记’的指标

 var option=
  {
      Type:'历史K线图',
      ........................
      Windows: 
      [
          {
              Index:'SVG图标标记',
              API: 
              {
                  Name:'SVG图标标记',
                  Script:null,
                  Args:null, 
                  Url:'http://127.0.0.1:18080/api/jsindex' //随便填 但不能为空
              } 
              
          },
          {
              Index:"MACD", 
          },
                  
      ], //窗口指标
    ................................
}

3. 网络协议回调计算指标

再NetworkFilter回调中, 我们自己计算 ‘SVG图标标记’ 指标

data.Name 可以获取当前是哪个网络协议
request.Data.indexname 用来获取当前是那个远程指标
这里使用timeout来模拟异步指标计算

function NetworkFilter(data, callback)
{
    console.log('[NetworkFilter] data', data);

    if (data.Name=='APIScriptIndex::ExecuteScript')
    {
        var request=data.Request;
        if (request.Data.indexname=='SVG图标标记')
        {
            data.PreventDefault=true;
            setTimeout(()=>
            {
                var hqchart=data.HQChart;
                var kData=hqchart.ChartPaint[0].Data;

                var closeLine={name:'收盘价线', type:0, data:kData.GetClose() };
                var line2= 
                { 
                    name:'MULTI_SVGICON', type:1, 
                    Draw: 
                    { 
                        DrawType:'MULTI_SVGICON', 
                        DrawData: 
                        {
                            Family:'js-iconfont', 
                            Icon:
                            [
                                { Date:20190916, Value:15.5, Symbol:'\ue611', Color:'rgb(240,0,0)', Baseline:1 },  //0 居中 1 上 2 下
                                { Date:20190919, Value:15.3, Symbol:'\ue615', Color:'rgb(240,240,0)',Baseline:2 },
                                { Date:20190909, Value:15.4, Symbol:'\ue615', Color:'rgb(240,100,30)'}
                            ] 
                        }
                    } //绘制图标数组
                };

                var apiData=
                {
                    code:0, 
                    stock:{ name:hqchart.Name, symbol:hqchart.Symbol }, 
                    outdata: { date:kData.GetDate() , outvar:[closeLine,line2] } 
                };
                
                
                console.log('[NetworkFilter::NetworkFilter] apiData ', apiData);
                callback(apiData);
            }, 500);
        }
    }
}

自定义图标json格式

name

‘MULTI_SVGICON’ 固定

type

1 固定

Draw

图标及坐标信息

Draw.DrawType

MULTI_SVGICON 固定

Draw.DrawData

个个图标的位置

Draw.DrawData.Family

对应iconfont 的family名字

Draw.DrawData.Icon

图标数组 一项对应1个图标

{
Date:(格式:yyyymmdd)在X轴的日期,
Time: (格式hhmm)在X轴的时间(分钟才有效),
Value:Y轴坐标值
Symbol:图标字符,
Color:颜色(可选),
Baseline:上下对齐方式 0=居中, 1=上,2=下,
Line:{ 文字与最高最低价连线(可选) }
Text: tooltip提示信息
YMove:输出位置在当前坐标下进行y轴的偏移
}

Draw.DrawData.Icon.Line

Line:{ Color:“rgb(153,50,204)”, KData:“L”, Width:3, Offset:[3,10], Dash:[5,5] }
Color:线段颜色
KData: 文字和K线的连线位置,字符串, L=最低价 H=最高加 C=收盘价
Width:3 线段粗细 (可选)
Offset:线段两头缩进 [0]=K线位置缩进偏移 [1]=文字位置的缩进偏移
Dash:[] 虚线, (可选)
在这里插入图片描述

图标显示在K线最高/最低价上

Draw.DrawData.Icon.Value 设置为"H",或"L" 就可以直接对应这个K线的最高最低价上了

var line2= 
{ 
    name:'MULTI_SVGICON', type:1, 
    Draw: 
    { 
        DrawType:'MULTI_SVGICON', 
        DrawData: 
        {
            Family:'js-iconfont', 
            Icon:
            [
                { Date:20190916, Value:15.5, Symbol:'\ue611', Color:'rgb(240,0,0)', Baseline:1 },  //0 居中 1 上 2 下
                { Date:20190919, Value:15.3, Symbol:'\ue615', Color:'rgb(240,240,0)',Baseline:2 },
                { Date:20201202, Value:15.4, Symbol:'\ue615', Color:'rgb(240,100,30)',Line:{Color:"rgb(65,105,225)", KData:"L", Width:3, Offset:[3,15],Dash:[5,5]}},
                { Date:20210106, Value:23.6, Symbol:'\ue611', Color:'rgb(240,100,30)',Line:{Color:"rgb(139,101,8)", KData:"H", Width:3, Offset:[3,15],Dash:[5,5]}},
                { Date:20201228, Value:"L", Symbol:'\ue615', Color:'rgb(240,240,0)',Baseline:1 },
                { Date:20210128, Value:"H", Symbol:'\ue615', Color:'rgb(240,240,0)',Baseline:2 },

            ] 
        }
    } //绘制图标数组
};

完整demo地址

https://github.com/jones2000/HQChart/blob/master/webhqchart.demo/samples/kline_MULTI_SVGICON.html

HQChart代码地址

地址:github.com/jones2000/HQChart

个人爱好(模型/摄影)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HQChart

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值