甜甜圈图d3.js
Donut chart d3.js
我试着修改这个例子。我想创建两个数据数组,并使用特殊的mergingAr()
函数而不是data.csv
合并它们。但这行不通。只有单色图表,没有任何数据。我在代码中找不到问题所在。这里是:
var width = 250,
height = 250,
radius = 230;
var arr1 = [44, 64]; //age
var arr2 = [14106543, 8819342]; //population
function type(d) {
d[1] = +d[1];
return d;
}
function mergingAr(array1, array2)
{
var i, out = [];
for(i=0;i<array1.length;i++)
{
out.push([array1[i],array2[i]]);
}
return out;
}
var data = mergingAr(arr1, arr2);
var color = d3.scale.ordinal()
.range(["#EB7221", "#8a89a6", "#7b6888", "#6b486b", "#a05d56", "#d0743c", "#ff8c00"]);
var arc = d3.svg.arc()
.outerRadius(radius - 100)
.innerRadius(radius - 180);
var pie = d3.layout.pie()
.sort(null)
.value(function(d) { return d[1]; });
var svg = d3.select("#pie").append("svg")
.attr("width", width)
.attr("height", height)
.append("g")
.attr("transform", "translate(" + width / 2 + "," + height / 2 + ")");
var g = svg.selectAll(".arc")
.data(pie(data))
.enter().append("g")
.attr("class", "arc");
g.append("path")
.attr("d", arc)
.style("fill", function(d) { return color(d[0]); });
g.append("text")
.attr("transform", function(d) { return "translate(" + arc.centroid(d) + ")"; })
.attr("dy", ".35em")
.style("text-anchor", "middle")
.text(function(d) { return d[0]; });
var legend = svg.selectAll(".legend")
.data(color.domain())
.enter().append("g")
.attr("class", "legend")
.attr("transform", function(d, i) { return "translate(0," + i * 20 + ")"; });
legend.append("rect")
.attr("x", width - 18)
.attr("width", 18)
.attr("height", 18)
.style("fill", color);
legend.append("text")
.attr("x", width - 24)
.attr("y", 9)
.attr("dy", ".35em")
.style("text-anchor", "end")
.text(function(d) { return d; });
谢谢大家的帮助!
你的数据在那里,但你的颜色是错误的。现在,你有这样的行设置路径color:
.style("fill", function(d) { return color(d[0]); });
问题是你的数据是一个对象,而不是一个数组。(它是由pie
函数转换的),所以您需要引用对象上的data
属性,然后获得该数组的零索引,如下所示:
.style("fill", function(d) { return color(d.data[0]); });
相关文章:
- 如何在d3.js中返回路径的y坐标
- 有条件更新d3.js力图中节点的最佳方法
- 使用D3.js计算带有字母间距的文本长度
- D3.js模式不适用于弧形或圆环图
- d3.js Chord图的动态工具提示
- 在D3.js中,有没有任何方法可以将x和y方向上的滚动事件绑定到平移svg
- HTML5FileReader输出到D3.js图表
- D3.js生成有效的SVG,但不显示任何内容
- 更改 JS/D3 页上的元素位置
- 带有更新按钮.js D3 将新数据添加到旧数据而不是替换旧数据
- D3.js d3.max undefined
- 为什么我的 js.d3 代码不显示轴
- dc.js d3+crossfilter.top将过滤后的数据导出为CSV
- 如何在Plottable.js/D3.js制作的饼图中启用qtip2
- 2dimple.js/d3.js在窗口大小更改时自动调整图表大小
- D3.js D3.json返回Uncaught TypeError:无法读取属性'0'的未定义
- 如何计算(SVG) X/Y坐标的平移和旋转(在JS/D3.js)
- 当我们需要信任大约 200-300 个自定义图表时.js D3 是最佳选择吗?
- 简单条形图按字符串名称分组,带有 DC.js D3.js 和交叉过滤器.js
- 缺少标签- Cola.js/D3.js