2012-07-20 55 views

答えて

25

jqplotsのサイズ変更については、hereを参照してください。それは、ブラウザのサイズが変更されたときに動作させるために

、window.resizeイベントで再プロット機能をバインドします

$(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する必要があります。私のサイズ変更メソッドでは、 'replot()'を呼び出す直前に以下のコードを追加します。このようにして、 'barWidth'も再スケーリングされることを確認します。 '$ .each(plot.series、function(index、series){ series.barWidth = undefined; }); ' – Boro

+3

[問題を示すサンプル](http://jsfiddle.net/RNPxQ/22/)[解決策を示すサンプル](http://jsfiddle.net/RNPxQ/21/) – Boro

+1

非常にクールな@ボロ、私はそれを覚えておく必要があります。 – 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

関連する問題