我试图将默认的highcharts图例符号更改为我自己的自定义符号。 我希望图例标签旁边有一个字体很棒的图标。 为此,我想到了labelformatter:
labelFormatter: function () {
var on = '<g><text x="0" y="0" style="color:'+this.color+';font-family:FontAwesome"></text></g> ' + this.name;
var off = '<g><text x="0" y="0" style="color:'+this.color+';font-family:FontAwesome"></text></g> ' + this.name;
return this.iconState ? on : off;
}
实际上让我按照我的意愿添加图标,但现在我的问题如下:点击图例项目时,图标保持原始颜色,不会像标签一样变灰。 我想过在点击事件被触发时重新渲染图例(使用legendItemClicked),但是我还没有发现任何有用的东西。
有谁知道如何管理重新渲染图例?
OR
如何将符号设置为我自己的符号?
谢谢!
答案 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;
}
答案 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以确定是否单击以禁用或启用图例。