如何在高图的基本列图中隐藏/显示列? [英] How to hide/show a column in a basic column graph of highcharts?

查看:83
本文介绍了如何在高图的基本列图中隐藏/显示列?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



例如,考虑以下图表: href =http://jsfiddle.net/gh/get/jquery/1.9.1/highslide-software/highcharts.com/tree/master/samples/highcharts/demo/column-basic/ =nofollow> jsfiddle

我希望用户能够点击Sep列,隐藏它,相应地重新缩放坐标轴(x和y轴) 。



不幸的是,我不是javascript / jquery的专家。所以我想知道是否有可能做到这一点,以及如何做到这一点。



感谢您的帮助!



这里是小提琴的代码:

  $(function(){
$('#container')。 highcharts({
图表:{
类型:'列'
},
标题:{
text:'月平均降雨量'
},
字幕:{
text:'来源:WorldClimate.com'
},
xAxis:{
类别:[
'Jan',
'Feb',
'Mar',
'Apr',
'May',
'Jun',
'Jul',
' Aug',
'Sep',
'Oct',
'Nov',
'Dec'
]
},
yAxis :{
min:0,
title:{
text:'Rainfall(mm)'
}
},
tooltip:{
headerFormat:'< span style =font-size:10px> {point.key}< / span>< table>,
pointFormat:'< tr>< td style =color:{series。 color}; padding:0> {series.name}:< / td>'+
'< td style =padding:0>< b> {point.y:.1f } mm< / b>< / td>< / tr>',
footerFormat:'< / table>',
shared:true,
useHTML:true
$,
plotOptions:{
列:{
pointPadding:0.2,
borderWidth:0
}
},
series:[b $ {
名称:'东京',
数据:[49.9,71.5,106.4,129.2,144.0,176.0,135.6,148.5,216.4,194.1,95.6,54.4]

},{
名称: '纽约',
数据:[83.6,78.8,98.5,93.4,106.0,84.5,105.0,104.3,91.2,83.5,106.6,92.3]

},{
名称:'伦敦',
数据:[48.9,38.8,39.3,41.4,47.0,48.3,59.0,59.6,52.4,65.2,59.3,51.2]

},{
名称:'柏林',
数据:[42.4,33.2,34.5,39.7,52.6,75.5,57.4,60.4,47.6,39.1,46.8,51.1]

}]
});
});


解决方案

这是Daker的解决方案, href =http://jsfiddle.net/whFvA/4/ =nofollow> jsfiddle 。

html

 < div id =containerstyle =height:300px>< / div> 
< script src =http://code.highcharts.com/highcharts.src.js>< / script>
< button id =b4>隐藏第三类别< / button>
< button id =b5>显示第三类别< / button>

javascript

  var point = {
x:null,
y:null
};

var chart = new Highcharts.Chart({

图表:{
renderTo:'container'
},

xAxis:{'b'b'类别:['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct' ,'Nov','Dec']
},

系列:[{
类型:'列',
名称:'third',
数据:[95.6,54.4,29.9,71.5,106.4,129.2,144.0,176.0,135.6,148.5,216.4,194.1],
}]
});
$('#b4')。click(function(){
var no = 2; //第三个元素
//移除三月,希望我们只显示11个月.. 。
chart.xAxis [0] .setCategories(['Jan','Feb','Apr','May','Jun','Jul','Aug','Sep','Oct' ,'Nov','Dec'],false);
var data = [];
for(i = 0; i< chart.series [0] .data.length; i ++){
if(i data.push([chart.series [0] .data [i] .x,chart.series [0] .data [i] .y]) ;
} else if(i === no){
point.x = chart.series [0] .data [i] .x;
point.y = chart.series [ 0] .data [i] .y;
} else if(i> no){
data.push([chart.series [0] .data [i] .x - 1,chart .series [0] .data [i] .y]);
}
}
chart.series [0] .setData(data);
});
$ b $('#b5')。click(function(){
var no = 2; //第三个元素
var data = [];
for (i = 0; i< chart.series [0] .data.length; i ++){
if(i data.push([chart.series [0]。 data [i] .x,chart.series [0] .data [i] .y]);
} else if(i === no){
data.push([point.x ,point.y]);
data.push([chart.series [0] .data [i] .x + 1,chart.series [0] .data [i] .y]);
} else if(i> no){
data.push([chart.series [0] .data [i] .x + 1,chart.series [0] .data [i] .y ]);
}
}
chart.xAxis [0] .setCategories(['Jan','Feb','Mar','Apr','May','Jun' ,'Jul','Aug','Sep','Oct','Nov','Dec']);
chart.series [0] .setData(data);
});


I'm trying to show/hide a column (with all the associated points) in a graph of highcharts.

For instance, consider following graph: jsfiddle.

I want the user to be able to click on the "Sep" column, hide it, rescale the axis accordingly (x and y axis).

Unfortunately, I'm not an expert in javascript/jquery. So I was wondering if it is possible to do that, and how.

Thanks for your help!

Here is the code of the fiddle:

$(function () {
    $('#container').highcharts({
        chart: {
            type: 'column'
        },
        title: {
            text: 'Monthly Average Rainfall'
        },
        subtitle: {
            text: 'Source: WorldClimate.com'
        },
        xAxis: {
            categories: [
                'Jan',
                'Feb',
                'Mar',
                'Apr',
                'May',
                'Jun',
                'Jul',
                'Aug',
                'Sep',
                'Oct',
                'Nov',
                'Dec'
            ]
        },
        yAxis: {
            min: 0,
            title: {
                text: 'Rainfall (mm)'
            }
        },
        tooltip: {
            headerFormat: '<span style="font-size:10px">{point.key}</span><table>',
            pointFormat: '<tr><td style="color:{series.color};padding:0">{series.name}: </td>' +
                '<td style="padding:0"><b>{point.y:.1f} mm</b></td></tr>',
            footerFormat: '</table>',
            shared: true,
            useHTML: true
        },
        plotOptions: {
            column: {
                pointPadding: 0.2,
                borderWidth: 0
            }
        },
        series: [{
            name: 'Tokyo',
            data: [49.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]

        }, {
            name: 'New York',
            data: [83.6, 78.8, 98.5, 93.4, 106.0, 84.5, 105.0, 104.3, 91.2, 83.5, 106.6, 92.3]

        }, {
            name: 'London',
            data: [48.9, 38.8, 39.3, 41.4, 47.0, 48.3, 59.0, 59.6, 52.4, 65.2, 59.3, 51.2]

        }, {
            name: 'Berlin',
            data: [42.4, 33.2, 34.5, 39.7, 52.6, 75.5, 57.4, 60.4, 47.6, 39.1, 46.8, 51.1]

        }]
    });
});

解决方案

Here is the solution from Daker, with the jsfiddle.

html

<div id="container" style="height: 300px"></div>
<script src="http://code.highcharts.com/highcharts.src.js"></script>
<button id="b4">Hide third category</button>
<button id="b5">Show third category</button>

javascript

var point = {
x: null,
y: null
};

var chart = new Highcharts.Chart({

chart: {
    renderTo: 'container'
},

xAxis: {
    categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
},

series: [{
    type: 'column',
    name: 'third',
    data: [95.6, 54.4, 29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1],
}]
});
$('#b4').click(function () {
var no = 2; //third element
// removed march, hoping we'd only show 11 months...
chart.xAxis[0].setCategories(['Jan', 'Feb', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], false);
var data = [];
for (i = 0; i < chart.series[0].data.length; i++) {
    if (i < no) {
        data.push([chart.series[0].data[i].x, chart.series[0].data[i].y]);
    } else if (i === no) {
        point.x = chart.series[0].data[i].x;
        point.y = chart.series[0].data[i].y;
    } else if (i > no) {
        data.push([chart.series[0].data[i].x - 1, chart.series[0].data[i].y]);
    }
}
chart.series[0].setData(data);
});

$('#b5').click(function () {
var no = 2; //third element
var data = [];
for (i = 0; i < chart.series[0].data.length; i++) {
    if (i < no) {
        data.push([chart.series[0].data[i].x, chart.series[0].data[i].y]);
    } else if (i === no) {
        data.push([point.x, point.y]);
        data.push([chart.series[0].data[i].x + 1, chart.series[0].data[i].y]);
    } else if (i > no) {
        data.push([chart.series[0].data[i].x + 1, chart.series[0].data[i].y]);
    }
}
chart.xAxis[0].setCategories(['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']);
chart.series[0].setData(data);
});

这篇关于如何在高图的基本列图中隐藏/显示列?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆