【问题标题】:dimple js pie chart酒窝js饼图
【发布时间】:2015-04-08 03:00:25
【问题描述】:

我希望能够通过dimple js 制作饼图。我有以下数据:

    var data = [{'month': monthNames[3], 'percentonsale': 60},
                {'month': monthNames[10], 'percentonsale': 90}]

我只想要两个饼图,一个显示 60%,另一个显示 90%。但是,Dimple 不是这样工作的。

我最终不得不做以下事情(取自Dimple.js multi series bar not stacked):

var explodeData = function (oldData) {
  var newData = [];
  _.forEach(data, function(row) {
    newData.push({month: row.month, salesstart: row.salesstart, percentonsale: row.percentonsale, value: .5});
    newData.push({month: row.month, salesstart: row.salesstart, percentonsale: (100 - row.percentonsale), value: .5});
  })
  return newData;
};

在 Dimple 中是否有某种方法可以制作饼图,我只需将百分比传递给它,然后它会根据它制作饼图吗?问题是我想画出在售商品的百分比。如果我必须创建这个虚拟数据,Dimple 无法区分销售和非销售,它只是绘制了我通过的数据点(销售和虚拟销售)的百分比在里面,这并不理想

【问题讨论】:

    标签: d3.js dimple.js


    【解决方案1】:

    您不能让 Dimple 绘制饼图的一部分,而没有您传入的数据实际表示该部分,它无法推断其余部分。您必须 1) 添加另一个属性来关闭系列以区分“特价”和“非特价”:

    var data = [
      {'month': 'march', 'percent': 60, 'type' : 'on-sale'},
      {'month': 'october', 'percent': 90, 'type' : 'on-sale'}
    ];
    

    和 2) 通过循环遍历数据来计算每个的余数以创建相反的行,然后为每个行创建一个图表:

    data.forEach(function(d,i){
          var svg = dimple.newSvg("#chartContainer", 300, 100);
      
          var oppositeRow = { 
                    'month' : d.month, 
                    'type' : 'not-on-sale', //this is your series key
                    'percent' : (100 - d.percent)
                   };
      
          var newData = [d, oppositeRow];
          var myChart = new dimple.chart(svg, newData);
          myChart.addMeasureAxis("p", "percent");
          myChart.addSeries("type", dimple.plot.pie);
          myChart.draw();
    });
    

    这将为您提供每个月的单独饼图,如下所示:

    如果您可以访问数据的创建位置,那么此时对其进行编辑可能会更容易,否则您将需要在 javascript 中对其进行操作以根据需要对其进行格式化。

    此示例可在此处获得:http://jsbin.com/nuvihu/1/edit?js,output

    【讨论】:

    • 谢谢,我试图支持你的回答,但它不会让我
    • 您需要 15 声望才能对答案进行投票,但如果它适合您,您应该能够接受任何级别的答案。谢谢
    • 我尝试使用上面的代码,但它现在可以工作了......我已经用上面的代码创建了例子..jsfiddle.net/2ybedjLo
    猜你喜欢
    • 1970-01-01
    • 2014-05-24
    • 1970-01-01
    • 2014-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    相关资源
    最近更新 更多