首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有一个对象键的d3饼图/value

带有一个对象键的d3饼图/value
EN

Stack Overflow用户
提问于 2017-11-14 23:11:42
回答 1查看 890关注 0票数 3

你好,我是d3和javascript的新手。我试图用一个填充多个键和值的对象来显示饼图。

我的目标是:

代码语言:javascript
复制
dataset Object { $Allied Health Professions, Dentistry, Nursing and Pharmacy: 4, $Psychology, Psychiatry and Neuroscience: 4, $Biological Sciences: 4, $General Engineering: 4, $Architecture, Built Environment and Planning: 4, $Geography, Environmental Studies and Archaeology: 4, $Business and Management Studies: 4, $Law: 4, $Social Work and Social Policy: 4, $Education: 4, 5 de plus… }

我的代码很长,在多个文件中,所以我不认为链接它是相关的。

我成功地用一个简单的数组加载了一个饼图,但是我不知道如何在这里访问这些值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-14 23:53:24

D3 data方法接受3件事情:

  1. 阵列;
  2. A功能;
  3. 什么也没有;

因此,您必须在一个对象数组中转换该对象,其中一个特定属性用于类别,一个属性用于该值。例如:

代码语言:javascript
复制
var obj = {
  "Allied Health Professions, Dentistry, Nursing and Pharmacy": 4,
  "Psychology, Psychiatry and Neuroscience": 4,
  "Biological Sciences": 4,
  "General Engineering": 4,
  "Architecture, Built Environment and Planning": 4
};
var data = [];
for (var key in obj) {
  data.push({
    name: key,
    value: obj[key]
  })
};
console.log(data)

下面是一个包含部分对象的基本演示:

代码语言:javascript
复制
var obj = {
  "Allied Health Professions, Dentistry, Nursing and Pharmacy": 4,
  "Psychology, Psychiatry and Neuroscience": 4,
  "Biological Sciences": 4,
  "General Engineering": 4,
  "Architecture, Built Environment and Planning": 4
};
var data = [];
for (var key in obj) {
  data.push({
    name: key,
    value: obj[key]
  })
};
var arc = d3.arc().outerRadius(100).innerRadius(0);
var pie = d3.pie().value(function(d) {
  return d.value
});
var colors = d3.scaleOrdinal(d3.schemeCategory10)
var svg = d3.select("svg")
  .append("g")
  .attr("transform", "translate(100,100)")
svg.selectAll(null)
  .data(pie(data))
  .enter()
  .append("path")
  .attr("d", arc)
  .style("fill", function(d, i) {
    return colors(i)
  })
代码语言:javascript
复制
<script src="https://d3js.org/d3.v4.min.js"></script>
<svg width="200" height="200"></svg>

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47296809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档