2012-11-29 35 views
3

使用jqplot時,我必須創建2個系列的條形圖,並且每個都包含3個不同的值(類別)。問題是第一個值約爲50000,另外兩個約爲(-3) - (3)。因此,在繪製一張圖表時,只有2個欄可見。 我在想爲y軸使用LogRenderer,但它似乎根本沒有工作。最好的選擇是爲每個tickgroup(類別)設置不同的y軸,但是在搜索後我沒有找到任何方法來做到這一點。 (重要的是必須只有2個系列 - 這是日期比較,所以不可能改變系列中的內容)jqplot&barcharts中不同比例的條和Y軸

有誰知道如何做到這一點?或者還有沒有其他方式可以將所有數據顯示在一個圖表上(主要是使用條形圖)。

JS撥弄我的工作示例: http://jsfiddle.net/F5N4r/

標題:

<script type="text/javascript" src="https://bitbucket.org/armata007/jqplot/downloads/jquery.jqplot.min.js"></script> 
<script type="text/javascript" src="https://bitbucket.org/armata007/jqplot/downloads/jqplot.barRenderer.min.js"></script> 
<script type="text/javascript" src="https://bitbucket.org/armata007/jqplot/downloads/jqplot.canvasAxisTickRenderer.min.js"></script> 
<script type="text/javascript" src="https://bitbucket.org/armata007/jqplot/downloads/jqplot.categoryAxisRenderer.min.js"></script> 
<script type="text/javascript" src="https://bitbucket.org/armata007/jqplot/downloads/jqplot.enhancedLegendRenderer.min.js"></script> 
<script type="text/javascript" src="https://bitbucket.org/armata007/jqplot/downloads/jqplot.logAxisRenderer.min.js"></script> 
<div id="plot"></div>​ 

代碼:

var s1 = [50000, 0.11, 2.3]; 
var s2 = [55000, -0.20, 1.4]; 

var ticks = ['category 1', 'category 2', 'category 3']; 

var plot1 = $.jqplot('plot', [s1, s2], { 
    seriesDefaults: { 
     renderer: $.jqplot.BarRenderer, 
     rendererOptions: { 
      fillToZero: true 
     } 
    }, 
    series: [ 
     { 
     label: 'January 2012'}, 
    { 
     label: 'February 2012'} 
    ], 
    legend: { 
     show: true, 
     placement: "outside", 
     location: "s", 
     renderer: $.jqplot.EnhancedLegendRenderer, 
     rendererOptions: { 
      numberRows: 1 
     }, 
     marginTop: "34px" 
    }, 
    axes: { 

     xaxis: { 
      renderer: $.jqplot.CategoryAxisRenderer, 
      ticks: ticks 
     }, 


     yaxis: { 
      //renderer: $.jqplot.LogAxisRenderer, 
      pad: 1.05, 
      tickOptions: { 
       formatString: '%d' 
      } 
     } 
    } 
});​ 

結果: http://www.roslaw.pl/pics/2012-11-29_18-56-55_835341x930andWndpnd.png

感謝

回答

0

我一直在玩這個自己,希望這可以節省一些人的時間。

您需要爲每個傳遞到函數 (您的案例中的s1和s2)中的每一個定義一個單獨的系列。您定義它們的順序與它們傳遞的順序相對應。

series: [ 
    { 
     label: 'January 2012', 
    }, 
    { 
     yaxis:'y2axis', 
     label: 'February 2012' 
    } 
], 

... 

axes: { 
    xaxis: { 
     }, 
     yaxis: { 
      label: "y axis 1" 
     }, 
     y2axis: { 
      label: 'y axis 2', 
     } 
}