【问题标题】:Set custom legend item symbol (or icon) in HIghcharts在 HIghcharts 中设置自定义图例项符号(或图标)
【发布时间】:2015-10-23 10:29:26
【问题描述】:

我正在尝试将默认的 highcharts 图例符号更改为我自己的自定义符号。 我希望在图例标签旁边有一个很棒的字体图标。 为此,我想到了 labelformatter:

labelFormatter: function () {
                    var on  = '<g><text x="0" y="0" style="color:'+this.color+';font-family:FontAwesome">&#xf14a;</text></g> ' + this.name;
                    var off   = '<g><text x="0" y="0" style="color:'+this.color+';font-family:FontAwesome">&#xf0c8;</text></g> ' + this.name;

                    return  this.iconState ? on : off;
                }

这实际上让我可以根据需要添加图标,但现在我的问题如下:单击图例项时,图标保持原始颜色,不会像标签一样变成灰色。 我考虑过在触发点击事件时重新渲染图例(使用 legendItemClicked),但我没有找到任何可行的方法。

有谁知道我如何管理重新渲染图例?

如何将符号设置为我自己的?

谢谢!

【问题讨论】:

    标签: javascript jquery highcharts


    【解决方案1】:

    您可以通过将此信息添加到 Highcharts 符号数组来定义您的自定义符号,如示例中所示:

     Highcharts.SVGRenderer.prototype.symbols.cross = function (x, y, w, h) {
        return ['M', x, y, 'L', x + w, y, 'z'];
    };
    if (Highcharts.VMLRenderer) {
        Highcharts.VMLRenderer.prototype.symbols.cross = Highcharts.SVGRenderer.prototype.symbols.cross;
    }
    

    http://jsfiddle.net/nhx59/2/

    或使用图片http://www.highcharts.com/demo/spline-symbols

    【讨论】:

      【解决方案2】:

      还有另一种方法。 在我的 labelFormatter 中,我返回一个包含我的图像的 html 字符串,具有唯一的类名或 id。

      现在,我在 plotOptions.column.events 或 plotOptions.line.events 下监听 legendItemClick 事件,然后找到我的元素并添加一个具有不透明度的 css 类,如下所示:.dullImage { opacity: 0.4; filter: alpha(opacity=40); /* msie */ }

      在 legendItemClick 中,传递了事件对象,您可以查看 event.currentTarget.name(查找图例名称)和 event.currentTarget.isDirty 以确定这是单击以禁用还是启用图例。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-02
        • 1970-01-01
        相关资源
        最近更新 更多