如何在高图表的基本柱形图中隐藏/显示列
How to hide/show a column in a basic column graph of highcharts?
我正在尝试在高图表中显示/隐藏一列(以及所有相关点)。
例如,考虑下图:jsfiddle。
我希望用户能够单击"Sep"列,隐藏它,相应地重新缩放轴(x 和 y 轴)。
不幸的是,我不是javascript/jquery的专家。所以我想知道是否有可能这样做,以及如何做到这一点。
感谢您的帮助!
这是小提琴的代码:
$(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]
}]
});
});
这是Daker的解决方案,使用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);
});
要使用分组条形图执行此操作,您需要创建一个自定义函数,该函数将
1)从图表中删除数据系列
2) 在删除单击的数据点的情况下重建数据系列
3) 将序列重新添加到图表中
和
4)您将需要构建某种形式的外部控件来模仿图例,以便用户仍然可以单击某些内容以重新显示已删除的数据。 否则,当您重新缩放轴时,将删除标签,并且用户无法取回数据。
不幸的是,这不是一项微不足道的工作。
setData() 函数将处理 1 和 3:http://api.highcharts.com/highcharts#Series.setData%28%29
OTOH,如果您想使用标准(非分组、非堆叠)条形图来执行此操作,您可以简单地将每个条形设置为单独的数据系列,内置的图例功能将为您处理所有内容。
相关文章:
- 基于其他下拉菜单选择隐藏/显示下拉菜单
- 数据表-隐藏/显示列
- $scope变量,ng隐藏/显示
- 隐藏/显示包含单词的ul li项目.但只能入住李的子女
- JQuery隐藏/显示无法正常工作
- 隐藏/显示下面的分区根据是否选择某个选项进行选择
- 使用类而不是id在JavaScript中隐藏显示
- 我想隐藏/显示我的SVG元素,同时在anguarJS中使用它
- 隐藏/显示图像
- Javascript 中的表 - 隐藏/显示列
- 仅使用Javascript隐藏/显示元素,而不会弄乱DOM
- 隐藏/显示 js 代码不会在 IE8 或更低版本上运行
- Magento:根据所选国家/地区隐藏/显示输入字段
- 货到付款选择隐藏/显示付款方式
- "隐藏/显示”;元素和更改按钮背景图像
- Bootstrap Collapse.js切换菜单的隐藏/显示
- 如何隐藏/显示<面板>使用jquery
- 在php中隐藏/显示切换回声结果
- 如何使用jquery使2个按钮切换css,而只使用1个按钮.不显示隐藏/显示
- JQuery隐藏/显示不起作用