Code in concern: http://jsfiddle.net/h6qrbpwo/10/
关注的代码:http://jsfiddle.net/h6qrbpwo/10/
$(function() {
var chart;
var d = 1;
var index = 0;
function getYValue(chartObj, seriesIndex, xValue) {
var yValue = null;
var points = chartObj.series[seriesIndex].points;
for (var i = 0; i < points.length; i++) {
if(i == points.length - 1 && points[i].x != xValue){
return 0;
}
yValue = points[i].y;
}
return yValue;
}
$('#b').click(function() {
console.log(index);
var d = getYValue(chart, index, 20.5);
console.log(d);
d++;
console.log(d);
chart.addSeries({
grouping: false,
data: [
[20.5, d]
]
});
index ++;
})
chart = new Highcharts.Chart({
chart: {
type: 'column',
renderTo: 'container'
},
title: {
text: ''
},
xAxis: {
min: 0,
max: 100
},
credits: {
enabled: false
},
series: [{
name: '',
data: [5, 3, 4, 7, 2]
}]
});
});
(Note: this JSFiddle is just for demonstration purpose.)
(注意:这个JSFiddle仅用于演示目的。)
I would like to have a bar chart with bars with animated incrementation (i.e. only the part increased) instead of redrawing the whole bar.
我想要一个带有动画增量条形图的条形图(即只增加部分),而不是重绘整个条形图。
Thanks in advance.
提前致谢。
1 个解决方案
#1
0
You can do something like this.
你可以做这样的事情。
$(function() {
var chart;
var d = 1;
var index = 0;
function getYValue(chartObj, seriesIndex, xValue) {
var yValue = null;
var points = chartObj.series[seriesIndex].points;
for (var i = 0; i < points.length; i++) {
if(i == points.length - 1 && points[i].x != xValue){
return 0;
}
yValue = points[i].y;
}
return yValue;
}
$('#b').click(function() {
//var newValue = series[0].data[0];
//chart.series[0].points[0].update(100);
chart.series[0].addPoint(0, false, false, false);
chart.redraw(false);
chart.series[0].points[chart.series[0].points.length - 1].update(1);
/*
console.log(index);
var d = getYValue(chart, index, 20.5);
console.log(d);
d++;
console.log(d);
chart.addSeries({
grouping: false,
data: [
[20.5, d]
]
});
index ++;
*/
})
chart = new Highcharts.Chart({
chart: {
type: 'column',
renderTo: 'container'
},
title: {
text: ''
},
xAxis: {
min: 0,
//max: 10
},
credits: {
enabled: false
},
series: [{
name: '',
data: [5, 3, 4, 7, 2]
}]
});
});
You can see the demo here.
你可以在这里看到演示。
#1
0
You can do something like this.
你可以做这样的事情。
$(function() {
var chart;
var d = 1;
var index = 0;
function getYValue(chartObj, seriesIndex, xValue) {
var yValue = null;
var points = chartObj.series[seriesIndex].points;
for (var i = 0; i < points.length; i++) {
if(i == points.length - 1 && points[i].x != xValue){
return 0;
}
yValue = points[i].y;
}
return yValue;
}
$('#b').click(function() {
//var newValue = series[0].data[0];
//chart.series[0].points[0].update(100);
chart.series[0].addPoint(0, false, false, false);
chart.redraw(false);
chart.series[0].points[chart.series[0].points.length - 1].update(1);
/*
console.log(index);
var d = getYValue(chart, index, 20.5);
console.log(d);
d++;
console.log(d);
chart.addSeries({
grouping: false,
data: [
[20.5, d]
]
});
index ++;
*/
})
chart = new Highcharts.Chart({
chart: {
type: 'column',
renderTo: 'container'
},
title: {
text: ''
},
xAxis: {
min: 0,
//max: 10
},
credits: {
enabled: false
},
series: [{
name: '',
data: [5, 3, 4, 7, 2]
}]
});
});
You can see the demo here.
你可以在这里看到演示。