我正在使用一个jqPlot,想知道当有人改变窗口大小时,是否有办法调整它的大小/重画它。我知道有一个重画函数,但我不确定如何真正调用它…有人能给我一些如何做到这一点的建议吗?
下面是我的代码:
$.jqplot('chart1', [line1], {
title:'Users Per Day',
axes:{
xaxis:{
renderer:$.jqplot.DateAxisRenderer,
tickRenderer: $.jqplot.CanvasAxisTickRenderer ,
// tickInterval:'1 week',
tickOptions:{
formatString:'%b %#d, %y',
angle:-30
}
},
yaxis:{
tickOptions:{
formatString:'%.1f'
}
}
},
highlighter: {
show: true,
sizeAdjust: 7.5
},
cursor: {
show: false
/*show: true,
zoom: true,
showTooltip: false */
}
});‘div’是在此代码之前填充的数组,而chart1是绘制图表的line1。
有什么想法吗?
谢谢,
克雷格
发布于 2012-04-13 01:42:59
有关可调整大小的图的页面非常有用:http://www.jqplot.com/deploy/dist/examples/resizablePlot.html
这就是我如何为我正在处理的一个项目解决您的特定问题的方法(我将使用您的代码作为示例):
首先,将绘图赋给一个变量:
plot = $.jqplot('chart1', [line1], {
title:'Users Per Day',
axes:{
xaxis:{
renderer:$.jqplot.DateAxisRenderer,
tickRenderer: $.jqplot.CanvasAxisTickRenderer ,
// tickInterval:'1 week',
tickOptions:{
formatString:'%b %#d, %y',
angle:-30
}
},
yaxis:{
tickOptions:{
formatString:'%.1f'
}
}
},
highlighter: {
show: true,
sizeAdjust: 7.5
},
cursor: {
show: false
/*show: true,
zoom: true,
showTooltip: false */
}
});然后在你的页面上添加这个函数:
$(window).resize(function() {
plot.replot( {resetAxes: true } );
});有了resetAxes,它也会重新调整轴的比例(你确实会丢失你设置的任何最小/最大值)。有关replot:http://www.jqplot.com/docs/files/jqplot-core-js.html#jqPlot.replot的更多信息,请参阅此页面。
发布于 2015-06-24 17:52:03
我用过
var timer;
$(window).resize(function () {
clearTimeout(timer);
timer = setTimeout(function () {
plot.replot({});
}, 100);
});因此,它不会一直重新绘制每个像素,而是在调整大小的末尾。
发布于 2012-03-24 17:14:20
通常情况下,jqplot图表占据了图表div ID所占的整个区域。因此,试着找到一种方法来重新调整div的大小,并在plot对象上调用redraw来重新绘制图表。
https://stackoverflow.com/questions/9722964
复制相似问题