2012-03-15 31 views
4

我正在使用一個jqPlot,並想知道是否有一種方法來調整/重繪它的時候有人改變窗口大小。我知道有一個重繪功能,但我不知道如何真正調用它...有人可以給我一些指導如何做到這一點?重繪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 */ 
       } 
      }); 

「LINE1」是此代碼和chart1前右填充的數組這就是爲在圖表繪製在div。

任何想法?

謝謝,

克雷格

+1

在此之前回答:http://stackoverflow.com/q/7212922/ – Aknosis 2012-03-15 16:07:13

回答

0

通常jqplot圖表佔據該圖表的div ID保持整個區域。因此,請嘗試找到一種重新調整div大小的方法,並重新繪製調用繪圖對象重繪的圖表。

8

上可調整大小的地塊本頁面是有用的: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,它也會重新調整座標軸(你確實會失去你可能設置的最小/最大值)。有關更多信息,請參閱此頁面:http://www.jqplot.com/docs/files/jqplot-core-js.html#jqPlot.replot

2

我用

var timer; 
    $(window).resize(function() { 
     clearTimeout(timer); 
     timer = setTimeout(function() { 
      plot.replot({}); 
     }, 100); 
    }); 

因此它不會保持型重構每個像素,而是在調整大小結束。