2012-07-20 2 views

답변

25

jqplots 크기 조정은 here으로되어 있습니다. 이 브라우저 크기를 조정할 때 작동하게하려면

의 window.resize 이벤트로 replot 기능을 결합 :

$(window).resize(function() { 
     plot1.replot({ resetAxes: true }); 
}); 

실행 코드 :

$(document).ready(function(){ 
 
    var plot1 = $.jqplot ('container', [[3,7,9,1,4,6,8,2,5]], {}); 
 
    
 
    $(window).resize(function() { 
 
      plot1.replot({ resetAxes: true }); 
 
    }); 
 
    
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script language="javascript" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jqPlot/1.0.8/jquery.jqplot.min.js"></script> 
 
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/jqPlot/1.0.8/jquery.jqplot.min.css"> 
 
     
 
<div id="container"></div>

+8

그래,이 +1해야합니다. 내 resize 메소드에서 나는 replot()을 호출하기 직전에 아래와 같은 코드를 추가한다. 이렇게하면'barWidth'도 재배 율화 될 것입니다. '$ .each (plot.series, function (index, series) { series.barWidth = undefined; }); ' – Boro

+3

[문제를 보여주는 샘플] (http://jsfiddle.net/RNPxQ/22/) [솔루션을 보여주는 샘플] – Boro

+1

Very cool @Boro, 나는 그 것을 기억해야 할 것이다. – Mark

5

I을 그래프에 많은 옵션이있는 경우 replot을 사용하면 항상 일관된 결과를 얻지 못하는 것으로 나타났습니다. 복잡한 그래프를 창 크기 조정에 대처하는 유일한 방법은 잔인하고 파괴하고 재구성하는 것입니다.

function() { 

    var plot; 

    var renderGraph = function() { 
     plot = $.jqplot('chartId', yourChartData, yourChartOptions); 
    } 

    renderGraph(); 

    var resizeGraph = function() { 
     if (plot) 
      plot.destroy(); 
     renderGraph(); 
    } 

    $(window).resize(function() { 
     resizeGraph(); 
    }); 
} 
+0

이 방법은 replot을 사용하여 크기를 변경하는 것보다 훨씬 효과적입니다. 물론, 우리는 조금 더 많은 자원을 사용하고 있지만 확실히 일관성이 있습니다. 모자를 @Giles에 내 놓는다 – roshambo

+0

그 성능 저하. – bharatesh