在HIghcharts中设置自定义图例项目符号(或图标)

时间:2014-08-26 06:41:23

标签: javascript jquery highcharts

我试图将默认的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),但是我还没有发现任何有用的东西。

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

OR

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

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以通过将此信息添加到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

答案 1 :(得分:0)

还有另一种方式。 在我的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以确定是否单击以禁用或启用图例。