是否可以在 highcharts 中使用 html 自定义形状标签 w/o?

Is it possible to make custom shaped label w/o use of html in highcharts?

我有动画移动标签

plotbandLabel.animate({
    y : yAxis.toPixels(y) - labelOffset
}, {
    duration : 500,
    step : function () {
        this.attr({
            text : yAxis.toValue(this.y + labelOffset).toFixed(2),
            zIndex : 999999999
        })
    },
    complete : function () {
        this.attr({
            text : y.toFixed(2),
            zIndex : 999999999
        })
    }
});

完整示例如下:http://jsfiddle.net/7yo3nht4/ 我需要这个标签的形状像一个箭头:

标签渲染器具有这种形式:

label: function (str, x, y, shape, anchorX, anchorY, useHTML, baseline, className)

所以如果 useHTML=true 字符串可以是这样的 HTML 字符串:

var txt = '<div class="arrow_box">'+(66).toFixed(2)+'</div>';

并应用适当的 CSS:

.arrow_box {
  color: #FFFFFF;
  position: relative;
  background: rgba(0, 0, 0, 0.75);
  border: 0px;
  padding-top: 10px;
  padding-bottom: 10px;
  padding-left: 5px;
  padding-right: 5px;
  width: 50px;
}
.arrow_box:after, .arrow_box:before {
    right: 100%;
    top: 50%;
    border: solid transparent;
    content: " ";
    height: 0;
    width: 0;
    position: absolute;
    pointer-events: none;
}

.arrow_box:after {
    border-color: rgba(255, 0, 0, 0)
    border-right-color: rgba(0, 0, 0, 0.75);
    border-width: 20px;
    margin-top: -20px;
}
.arrow_box:before {
    border-color: rgba(0, 255, 0, 0);
    border-right-color: rgba(0, 0, 0, 0.75);
    border-width: 20px;
    margin-top: -20px;
}

您可以获得一个箭头框作为标签。

检查 fiddle 更新:http://jsfiddle.net/beaver71/eenjkv5c/

如果您在 renderer.label 中省略 fill 属性,则不会创建标签框:

        plotbandLabel = this.renderer.label(
            (...)
          )
          .css({
            (...)
          }).attr({
            (...)
            //fill: 'red' // no fill
          })
          .add();

然后您可以创建自定义路径并将其附加到 plotbandLabel SVG 组:

        this.renderer.path(['m', -10, 15, 'l', 15, -15, 'l', 50, 0, 'l', 0, 30, 'l', -50, 0, 'l', -15, -15, 'z']).attr({
          fill: 'rgba(0, 0, 0, 0.75)'
        }).add(plotbandLabel);

现场演示: http://jsfiddle.net/kkulig/hqyfpsw4/


API参考:https://api.highcharts.com/class-reference/Highcharts.SVGRenderer#path