在系列隐藏/显示事件上隐藏/显示y轴

时间:2015-09-04 13:58:31

标签: javascript highcharts highstock

我正在制作一个多面板图表,我正试图在轴系列的隐藏事件中隐藏y轴。

我尝试设置轴高度并重绘它(不起作用),设置极值,没有任何效果。我也尝试了这个solution但是没有用,我认为它不起作用,因为我使用的是highstock而“解决方案”使用的是Highcharts,这有意义吗?

当隐藏其他人时,我还必须调整其他y轴的大小,但这是另一个问题。但是,如果某人有关于如何自动完成它的提示会很感激

这是我的JSFiddle code

$(function () {
$.getJSON('http://www.highcharts.com/samples/data/jsonp.php?filename=aapl-ohlcv.json&callback=?', function (data) {        
    var data1 = [ [100,0], [200,0], [300,1], [400,0], [500,1] ];
    var data2 = [ [100,1], [200,0], [300,1], [400,0], [500,0] ];      
    var data3 = [ [100,1], [200,1], [300,0], [400,0], [500,1] ];    
    var data4 = [ [100,0], [200,1], [300,1], [400,0], [500,0] ];

    // create the chart
    var chart = $('#container').highcharts('StockChart', {

        title: {
            text: 'AAPL Historical'
        },
        legend: {
            enabled: true
        },            

        plotOptions: {
            series: {
                events: {
                    hide: function (event) {
                        console.log(this.yAxis)
                        //Hide
                    },
                    show: function (event) {
                        console.log(this.yAxis)
                        //Display
                    }
                }
            }
        },

        tooltip: {
            pointFormatter: function() {
                var state = (this.y == 1 ? "Active" : "Inactive");
                var tooltip = '<span style="color:' + this.color + '">\u25CF</span> ' + this.series.name + ': <b>' + state + '</b><br/>'

                return tooltip;
            }
        },

        yAxis: [{
            height: '25%',
            offset: 0,
            lineWidth: 2,
            labels: {enabled: false}
        }, {
            top: '25%',
            height: '25%',
            offset: 0,
            lineWidth: 2,
            labels: {enabled: false},
            title : {
                text: "aaa"
            }
        }, {
            top: '50%',
            height: '25%',
            offset: 0,
            lineWidth: 2,
            labels: {enabled: false}
        }, {
            top: '75%',
            height: '25%',
            offset: 0,
            lineWidth: 2,
            labels: {enabled: false}
        }],

        series: [{
            name: 'Data1',
            data: data1,
            step: true,
            yAxis: 0
        }, {
            name: 'Data2',
            data: data2,
            step: true,
            yAxis: 1
        }, {
            name: 'Data3',
            data: data3,
            step: true,
            yAxis: 2
        }, {
            name: 'Data4',
            data: data4,
            step: true,
            yAxis: 3
        }]
    });
});

});

1 个答案:

答案 0 :(得分:0)

我在solution上工作得更多,我发现了一种隐藏y轴的方法,通过在系列隐藏事件中将其高度更改为0%。我也在系列节目活动中将轴高增加到25%。

plotOptions: {
    series: {
        events: {
            hide: function (event) {
                this.yAxis.update({
                    height: '0%'
                });
            },
            show: function (event) {
                this.yAxis.update({
                    height: '25%'
                });
            }
        }
    }
},

完整code

修改

当我们隐藏其中一个y轴或显示一个轴时,我找到了一种调整其他y轴的方法。 您可以查看完整的code

$(function () {
    $.getJSON('http://www.highcharts.com/samples/data/jsonp.php?filename=aapl-ohlcv.json&callback=?', function (data) {        
        var data1 = [ [100,0], [150,1], [150,0], [200,0], [300,1], [400,0], [500,1] ];
        var data2 = [ [100,1], [200,0], [300,1], [400,0], [500,0] ];      
        var data3 = [ [100,1], [200,1], [300,0], [400,0], [500,1] ];    
        var data4 = [ [100,0], [200,1], [300,1], [400,0], [500,0] ];

        // create the chart
        var chart = $('#container').highcharts('StockChart', {

            title: {
                text: 'AAPL Historical'
            },
            legend: {
                enabled: true
            },            

            plotOptions: {
                series: {
                    marker: {
                        enabled: true,
                        radius : 2
                    },
                    events: {
                        hide: function (event) {
                            var serieYAxis = this.yAxis;
                            serieYAxis.visivel = false;
                            serieYAxis.update({
                                height: '0%',
                                title: {
                                    style: {"display":"none"}
                                }
                            });

                            var axis = this.chart.yAxis.filter(
                                function (axis) {
                                    return axis.visivel == null || axis.visivel;
                                }
                            );
                            resizeAxis(axis);

                        },
                        show: function (event) {
                            this.yAxis.visivel = true;
                            this.yAxis.update({
                                title: {
                                    style: {"display":"initial"}
                                }
                            });

                            var axis = this.chart.yAxis.filter(
                                function (axis) {
                                    return axis.visivel == null || axis.visivel;
                                }
                            );


                            resizeAxis(axis);
                        }
                    }
                }
            },

            tooltip: {
                pointFormatter: function() {
                    var state = (this.y == 1 ? "Active" : "Inactive");
                    var tooltip = '<span style="color:' + this.color + '">\u25CF</span> ' + this.series.name + ': <b>' + state + '</b><br/>'

                    return tooltip;
                }
            },

            yAxis: [{
                height: '25%',
                offset: 0,
                lineWidth: 2,
                labels: {enabled: false},
                title : {
                    text: "y0"
                }
            }, {
                top: '25%',
                height: '25%',
                offset: 0,
                lineWidth: 2,
                labels: {enabled: false},
                title : {
                    text: "y1"
                }
            }, {
                top: '50%',
                height: '25%',
                offset: 0,
                lineWidth: 2,
                labels: {enabled: false},
                title : {
                    text: "y2"
                }
            }, {
                top: '75%',
                height: '25%',
                offset: 0,
                lineWidth: 2,
                labels: {enabled: false},
                title : {
                    text: "y3"
                }
            }],

            series: [{
                name: 'Data1',
                data: data1,
                step: true,
                yAxis: 0
            }, {
                name: 'Data2',
                data: data2,
                step: true,
                yAxis: 1
            }, {
                name: 'Data3',
                data: data3,
                step: true,
                yAxis: 2
            }, {
                name: 'Data4',
                data: data4,
                step: true,
                yAxis: 3
            }]
        });
    });


});