使用嵌套数据在D3中创建堆积的条形图

时间:2018-06-25 19:06:29

标签: javascript d3.js bar-chart stacked-chart claims

我是D3的新手,我一生都无法弄清楚嵌套的数据以及它与使用d3.stack()创建堆积的条形图有何关系。

数据

我使用的数据很敏感,因此我无法提供,但是它具有以下一般结构:

每行都是具有相关医师和付款人的索赔。医师可以有与之相关的任何数量的索赔,这些索赔又可以由任何付款人支付

目标

我想制作一个堆积的条形图和相关的图例。每位医师一个杆,每个堆叠的杆由付款人的索赔数量相对确定。图例应包括所有付款人(即使某些酒吧没有代表所有付款人)。例如:

医生A提出了100项索赔。付款人A付了12笔,付款人B付了35笔,付款人C付了27笔,付款人D付了其余的钱(26项索赔)。因此,第一个小节将细分为4个部分,其中每个部分的大小都取决于与之相关的声明的数量

问题

我已使用以下代码嵌套数据:

d3.csv("resources/data/claims.csv").then(function(data) {
  dataViz(data);
});

function dataViz(incomingData) {

  var claimsData = incomingData;

  var caseDistributionByPhysicianByPayorData = d3.nest()
                                                 .key(d=>d.responsible_physician)
                                                 .key(d=>d.payor_code)
                                                 .sortKeys(d3.ascending)
                                                 .entries(claimsData);
}

这将导致以下数据结构:

D3 data structure

我的问题是我不知道如何从此变为堆积的条形图。我已经阅读了有关nest()和stack()的文档,但所阅读的内容似乎无济于事,无法解释如何将这些数据转换为堆栈。使用选择和这些数据,我只能为N个医生生成元素,嵌套数据的子对象似乎无法访问。我是否正确解析此数据?还是这对我正在尝试的工作毫无结果。然后可以将此数据传递到d3.stack()以产生我想要的吗?抱歉,这是一个基本问题。我对此并不陌生,但仍在弄清楚D3。感谢您的任何帮助。

0 个答案:

没有答案