Изменение данных в jqPlot без перезагрузки графика
Мне нужна кнопка, которую пользователи могут нажимать, чтобы данные на графике изменялись в анимации без повторения полос, начинающихся с нижней части графика. Вот пример того, как я хотел бы, чтобы мой jqPlot вел себя: http://www.w3schools.com/jquery/tryit.asp?filename=tryjquery_eff_animate. Я не женат на использовании jqPlot, если есть другой плагин, который позволит мне это сделать. Спасибо!
Мой текущий код выглядит следующим образом:
function myReplot() {
var newdata = [[1,3],[2,6],[3,8],[4,11]];
plot1.series[0].data = newdata;
plot1.replot();
}
$(document).ready(function(){
$.jqplot.config.enablePlugins = true;
var data = [[2, 6, 7, 10]];
var ticks = ['a', 'b', 'c', 'd'];
plot1 = $.jqplot('chart1', data, {
// Only animate if we're not using excanvas (not in IE 7 or IE 8)..
animate: !$.jqplot.use_excanvas,
animateReplot: !$.jqplot.use_excanvas,
seriesDefaults:{
renderer:$.jqplot.BarRenderer,
pointLabels: { show: true }
},
axes: {
xaxis: {
renderer: $.jqplot.CategoryAxisRenderer,
ticks: ticks
}
},
highlighter: { show: false }
});
});
1 ответ
Решение
Это как близко я мог получить. Возможно, вы захотите удалить метки панели и сохранить только окончательные значения. JsFiddle ссылка
function myReplot() {
var newdata = [[1,3],[2,6],[3,8],[4,11]];
plot1.series[1].data = newdata;
plot1.replot(false);
}
$(document).ready(function(){
$.jqplot.config.enablePlugins = true;
$("#button1").on("click",function(){
myReplot();
});
var data = [[2, 6, 7, 10],[0,0,0,0]];
var ticks = ['a', 'b', 'c', 'd'];
plot1 = $.jqplot('chart1', data, {
// Only animate if we're not using excanvas (not in IE 7 or IE 8)..
stackSeries : true,
animate: !$.jqplot.use_excanvas,
//animateReplot: !$.jqplot.use_excanvas,
seriesDefaults:{
renderer:$.jqplot.BarRenderer,
pointLabels: { show: true,
stackedValue: true},
color: "orange"
},
axes: {
xaxis: {
renderer: $.jqplot.CategoryAxisRenderer,
ticks: ticks
},
yaxis:{
min:0,
max:50
}
},
highlighter: { show: false }
});
});