如何用d3制作多个图表.使用嵌套数据绘制图表
How to make multiple charts with d3.chart using nested data
我正在尝试使用d3创建几个图表。图表框架。这似乎是一个常见的用例:d3的全部意义。毕竟,图表是为了让图表可重用!如果你能给我举个例子,那就太棒了(:
我通过这个(https://github.com/misoproject/d3.chart/wiki/quickstart)教程来创建一个非常基本的"圆图"。(我完全复制了代码)。现在我要做的是为几组数据创建一个单独的图表。我稍微编辑了一下。在编辑之前,我们调用:
来设置图表var data = [1,3,4,6,10];
var chart = d3.select("body")
.append("svg")
.chart("Circles")
.width(100)
.height(50)
.radius(5);
chart.draw(data);
我试着把它改成:
var data = [{key:1, values:[1,3,4,6,10]},
{key:2, values:[5,2,10,8,11]},
{key:3, values:[1,5,9,16,12]}]
var chart = d3.select("body")
.selectAll("chart)
.data(data)
.enter()
.append("svg")
.chart("Circles")
.width(100)
.height(50)
.radius(5);
chart.draw(function(d) { return d.values; });
这不起作用。你可以在三个不同的地方看到一个圆的角,但是剩下的部分被切断了。但是如果replace
chart.draw(function(d) { return d.values; });
chart.draw([1,3,4,6,10]);
它正确地生成3个圆形图,所有的数据集。当我加上
chart.draw(function(d) { console.log(d.values) return d.values; });
控制台显示我试图传递的3个数组!我不明白是什么破坏了代码。这不应该是完全相同的事情传递实际数组到3个单独的图表?
这里有一个链接到JS bin与它的设置:http://jsbin.com/jenofovogoke/1/edit?html,js,console,output你可以随意摆弄它!
代码在最下面。
我对java脚本和d3很陌生,对d3.chart完全陌生。任何帮助都会非常感激!
我问帮助运营d3的Irene Ros。她告诉我问题出在d3。Chart的draw方法只能接受一个数组或一个数据对象——它不能接受一个函数。她给了我一些有用的提示来解决这个问题:通过使用转换函数来编辑图表中的数据,而不是使用函数,或者通过创建一个包含多个图表的图表(参见https://gist.github.com/jugglinmike/6004102获得一个很好的示例)。
然而,最后我发现对我来说最简单的解决方案是手动设置数据。这感觉有点像一个hack,因为D3已经为你这样做了,但它比改变我的图表的整个设置要简单得多,并且允许嵌套数据(耶!)。
var svg = d3.select("body")
.selectAll("svg")
.data(data)
.enter()
.append("svg");
svg.each(function(d, i) {
var chart = d3.select(this)
.chart("Circles")
.height(50)
.width(100)
.radius(5)
var data = d.values;
chart.draw(data);
});
- 用嵌套函数和默认函数定义函数
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 可以简化嵌套的延迟Q Promises解析吗
- 用于搜索的聚合物嵌套绑定
- 如何使用javascript获取嵌套对象中所有子对象的单个属性
- d3中堆栈函数和嵌套函数之间的差异
- 如何打印嵌套对象的所有值
- JavaScript 中的嵌套函数和 “this” 关键字
- 设置嵌套对象属性的更好方法
- querySelector/getElementByClassName嵌套项的顺序
- 猫鼬在特定记录中查找嵌套记录
- 访问嵌套JSON对象的键,其中键是动态的
- D3嵌套组作为x轴
- Ionic和angularjs嵌套步骤应用程序
- 从多维嵌套json数组创建下拉列表
- 默认情况下折叠和展开嵌套列表
- 嵌套对象结构
- 显示嵌套窗体
- D3从嵌套的JSON中绘制第二个圆环图
- 在绘制图表之前在每个循环中编排嵌套的 AJAX 调用 (JQuery)