2012-10-11 55 views
0

我想用正常軸和對數軸創建一個多軸座標圖,使用JQPlot。 圖表應該使用四個系列的數據。無論我嘗試什麼,我似乎都無法創造它。 對齊軸,讓對數刻度從零開始,具有如下所示的日誌刻度:1-10-100-1000-10000,它們看起來都不可能實現。 有人可以幫助我嗎?謝謝。正常和對數刻度的多軸圖表

<html> 
<head> 
    <script type="text/javascript" src="jquery.min.js"></script> 
    <script type="text/javascript" src="jquery.jqplot.min.js"></script> 

    <link rel="stylesheet" href="jquery.jqplot.min.css" type="text/css" media="all" /> 
    <!--[if IE]><script language="javascript" type="text/javascript" src="./scripts/jqplot/excanvas.js"></script><![endif]--> 
    <script type="text/javascript" language="javascript"> 
     function goe() { 
      parts = ['mXVai', 'ltPo', ':', 'chrU', 'i', '[email protected]', 'jEqp', 'lNot.', 'cIUo', 'm'] 
      location.href=parts.join('').replace(/[A-Z]/g, ''); 
      return false; 
     } 

     SyntaxHighlighter.defaults['toolbar'] = false; 
    </script>  


    <title>JQPlot demo</title> 
    <script class="include" language="javascript" type="text/javascript" src="plugins/jqplot.barRenderer.min.js"></script> 
    <script class="include" language="javascript" type="text/javascript" src="plugins/jqplot.categoryAxisRenderer.min.js"></script> 
    <script class="include" language="javascript" type="text/javascript" src="plugins/jqplot.pointLabels.min.js"></script> 
    <script class="include" language="javascript" type="text/javascript" src="plugins/jqplot.logAxisRenderer.min.js"></script> 
    <script class="include" language="javascript" type="text/javascript" src="plugins/jqplot.canvasTextRenderer.min.js"></script> 
    <script class="include" language="javascript" type="text/javascript" src="plugins/jqplot.canvasAxisLabelRenderer.min.js"></script> 
    <script class="include" language="javascript" type="text/javascript" src="plugins/jqplot.canvasAxisTickRenderer.min.js"></script> 
    <script class="include" language="javascript" type="text/javascript" src="plugins/jqplot.dateAxisRenderer.min.js"></script> 
    <script class="include" language="javascript" type="text/javascript" src="plugins/jqplot.logAxisRenderer.js"></script> 
    <script class="include" language="javascript" type="text/javascript" src="plugins/jqplot.trendline.min.js"></script> 

    <script class="code" type="text/javascript"> 
     $(document).ready(function(){ 
      var v1 = [54551.94,15192.79,37937.26,11417.67,11799.59,18377.53,49207.82,168235.42,16654.29,62145.78]; 
      var v2 = [104235.30,8624.41,35598.76,12991.59,13237.07,1510.21,57692.54,93012.29,18102.28,74597.99]; 
      var v3 = [132.19,2.99,6.09,0.38,1.44,4.41,5.25,3.37,3.60,2.14]; 
      var v4 = [64.65,6.67,7.67,0,19,2.72,10.72,5.67,3.84,3.60,2.44]; 

      var ticks = ['A', 'B', 'C', 'D', 'E', 'F', 
         'G', 'H', 'I', 'J'] 

      var plot1 = $.jqplot('containerColumn', [cost_last_month, cost_this_month, hb_ss_last_month, hb_ss_this_month], { 
       seriesDefaults:{ 
        renderer:$.jqplot.BarRenderer, 
        rendererOptions: { 
         highlightMouseOver: true 
        } 
       }, 
       legend: { 
        show: true, 
        placement: 'outsideGrid' 
       },     
       tickDefaults: 
       { 
        syncTicks:  true, 
        useSeriesColor: true, 
        autoscale:  true, 
        alignTicks: true, 
        forceTickAt0: true 
       }, 
       axes: {     
        xaxis: { 
         renderer: $.jqplot.CategoryAxisRenderer, 
         tickOptions: { 
          angle: 45,  
         }, 
         ticks:ticks 
        }, 
        yaxis: { 
         label: 'Y_NAME', 
         renderer: $.jqplot.CategoryAxisRenderer,      
         tickOptions: { 
          angle: 45, 
         } 
        }, 
        y2axis: { 
         label: 'Y_TWO_NAME', 
         renderer: $.jqplot.CategoryAxisRenderer,  
        } 
       }, 
       series:[ 
        {yaxis:'yaxis', label:'v1'}, 
        {yaxis:'yaxis', label:'v2'}, 
        {yaxis:'y2axis', label:'v3'}, 
        {yaxis:'y2axis', label:'v4'} 
       ] 
      }); 
     }); 
    </script> 
</head> 
<body> 
    <div id="containerColumn"></div> 
</body> 
+0

這個問題仍然存在,所以這個評論是爲了讓帖子回到問題的頂部 – Attiej

回答

4

這是接近我可以得到:

enter image description here

它似乎並不像LogAxisRenderer要尊重min選項,迫使它在0開始(雖然看去在它看起來支持它的代碼中)。

小提琴here

+0

謝謝你的回答。這已經是一個很大的改進。還有兩個問題:1.是否無法使LogAxisRenderer遵守最小值?從零開始或從0.1開始會好於從1000開始。2.日誌軸看起來有點奇怪,因爲這些值並不都具有相同數量的白色間距。例如,1000和5000之間的間隔比5000和10000之間的間隔大很多。我想要有一個標準數量的白色間隔,或者省略5000,50000和500000. – Attiej

+0

@Attiej:問題(1):這是他們似乎還沒有確定的東西。問題(2):這就是日誌軸的工作方式。拿你的計算器來玩y = 10^x,並且你會看到x的較低值之間的相等變化產生的y的變化低於x在較高值時的平等變化。 – Roman