首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Highcharts:堆叠图的图例

Highcharts:堆叠图的图例
EN

Stack Overflow用户
提问于 2013-07-05 12:16:10
回答 2查看 2.7K关注 0票数 1

举个例子,这是我用来解释这个问题的图表。

代码语言:javascript
复制
$(function () {
    $('#container').highcharts({

        chart: {
            type: 'column'
        },

        title: {
            text: 'Total fruit consumtion, grouped by gender'
        },

        xAxis: {
            categories: ['Apples', 'Oranges', 'Pears', 'Grapes', 'Bananas']
        },

        yAxis: {
            allowDecimals: false,
            min: 0,
            title: {
                text: 'Number of fruits'
            }
        },

        tooltip: {
            formatter: function() {
                return '<b>'+ this.x +'</b><br/>'+
                    this.series.name +': '+ this.y +'<br/>'+
                    'Total: '+ this.point.stackTotal;
            }
        },

        plotOptions: {
            column: {
                stacking: 'normal'
            }
        },

        series: [{
            name: 'John',
            data: [5, 3, 4, 7, 2],
            stack: 'male'
        }, {
            name: 'Joe',
            data: [3, 4, 4, 2, 5],
            stack: 'male'
        }, {
            name: 'Jane',
            data: [2, 5, 6, 2, 1],
            stack: 'female'
        }, {
            name: 'Janet',
            data: [3, 0, 4, 4, 3],
            stack: 'female'
        }]
    });
});

我们在图例中有系列的名字。图表由分组的列堆叠而成。我们将它们放在男性和女性类别中。

有没有办法让男性和女性出现在传说中?所以我们一次只能看到男性的食物消费或者女性的食物消费。

您可以将小提琴称为此处- jsfiddle.net/bLZHd/

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-05 17:35:39

您可以使用labelFormatter将项目名称替换为堆栈名称。两个系列应隐藏在图例(showInLegend)参数中。然后,您只需要捕获legendItemClick并迭代以检查串行堆栈名称。

代码语言:javascript
复制
legendItemClick: function () {
                    var chart = this.chart,
                        key = this.options.stack;   

                    $.each(this.chart.series,function(i,serie){

                        if(serie.options.stack === key) {
                            if(serie.visible)
                                serie.hide();
                            else
                                serie.show();
                        }    

                    });
                    return false;
                }

http://api.highcharts.com/highcharts#legend.labelFormatter

票数 2
EN

Stack Overflow用户

发布于 2013-07-05 14:24:59

你真的需要用图例来切换吗?

我会向您推荐这种问题,即按跨度切换:http://jsfiddle.net/bLZHd/1/

你所需要的是:

代码语言:javascript
复制
$.each(chart.series, function (k, v) {
    if (v.options.stack == elemId) { //elemId is the string to compare
        chart.series[k].show();
    } else {
        chart.series[k].hide();
    }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17480981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档