2015-09-28 76 views
0

我有一个绘制使用dimple.js如何使用dimple.js在条形图中添加“额外堆栈”?

http://jsfiddle.net/keshav_1007/Lkvm27o4/1/条形图 - 这里是小提琴

var yMax = 520; // overriding y axis 
var popup; 
var score=8000/100; 
var svg = dimple.newSvg("#chartContainer", 300, 400); 
var data = [{ 
    "Brand":"A", 
    "Day":"Mon", 
    "SalesVolume":10 }, 
    { 
    "Brand":"B", 
    "Day":"Mon", 
    "SalesVolume":20 }, 
    { 
    "Brand":"C", 
    "Day":"Mon", 
    "SalesVolume":20 }, 
    { 
    "Brand":"D", 
    "Day":"Mon", 
    "SalesVolume":20 }, 
    { 
    "Brand":"E", 
    "Day":"Mon", 
    "SalesVolume":20 }, 
    { 
    "Brand":"F", 
    "Day":"Mon", 
    "SalesVolume":50 }]; 
var myChart = new dimple.chart(svg, data); 

myChart.setBounds(100, 10, 250, 250) 
var x = myChart.addCategoryAxis("x", "Day"); 
var y = myChart.addMeasureAxis("y", "SalesVolume"); 
y.overrideMax = yMax; 
var s = myChart.addSeries("Brand", dimple.plot.bar); 
s.barGap=0.8; 
var lgnd = myChart.addLegend(80, 300, 300, 30, "left"); 

myChart.draw(); 

在该柱状图我需要把最后一个堆是[{"Brand":"F","Day":"Mon","SalesVolume":50 }]总是对的顶部而不改变其他堆栈的默认顺序。 如何做到这一点?

回答

0

您可以添加顺序规则,该系列是这样的:

s.addOrderRule(function (a, b) { 
    var result = 0; 
    if (a["Brand"] === "F" && b["Brand"] !== "F") { 
     result = 1; 
    } else if (a["Brand"] !== "F" && b["Brand"] === "F") { 
     result = -1; 
    } 
    return result; 
}); 

中,品牌是“F”最后这将会把任何东西,评价为0等元素意味着默认的排序将被应用这些情况。

function getComparer (dimension, lastValue) { 
    return function (a, b) { 
     var result = 0; 
     if (a[dimension] === lastValue && b[dimension] !== lastValue) { 
      result = 1; 
     } else if (a[dimension] !== lastValue && b[dimension] === lastValue) { 
      result = -1; 
     } 
     return result; 
    }; 
} 

然后,你可以把它叫做:

这可以通过使用一个函数返回的比较器进行动态

s.addOrderRule(getComparer("Brand", "F")); 
+0

我们可以使此功能动态?因为在我的情况下,“F”在任何时候都不会是“F”,它可能会在我的21个屏幕上各不相同。 – Keshav1007

+0

我已经更新了答案 –

+0

谢谢John,它完美地工作......我们可以单独设置一个特定的颜色(这个堆栈)..因为我正在绘制图表,它采用默认的一组值。我需要为这个图表设置一个特定的颜色。让我知道我们该怎么做? – Keshav1007

相关问题