用D3.csv加载DC.JS中的CSV文件
Load CSV file in DC.JS with D3.csv
我尝试使用DC.js
,但我无法使用d3.csv
加载external csv
。
这里是JSfiddle
工作(没有external csv
): http://jsfiddle.net/nicart/6k96mzta/1/
但是我不能调用csv spendData.csv
(主机:https://raw.githubusercontent.com/nicart/DC-js-chart/master/spendData.csv)我尝试一些代码,但我是新的JS,对不起…我以为这还可以,但什么也没发生。
d3.csv('https://raw.githubusercontent.com/nicart/DC-js-chart/master/spendData.csv', function(error, spendData) {
spendData.forEach(function(d) {
d.Spent = d.Spent.match(/'d+/);
});
有可能做出这样的东西吗?
var spendData = d3.csv('https://raw.githubusercontent.com/nicart/DC-js-chart/master/spendData.csv')
谢谢。
感谢Ami Tavory,我设法加载外部CSV。我拉进
d3.csv("spendData.csv", function(error, spendData) {
console.log(error);
console.log(spendData);
// normalize/parse data
spendData.forEach(function(d) {
在{
之后,我添加了所有其余的脚本,所以它呈现如下:
d3.csv("spendData.csv", function(error, spendData) {
console.log(error);
console.log(spendData);
// normalize/parse data
spendData.forEach(function(d) {
d.Spent = d.Spent.match(/'d+/);
});
// set crossfilter
var ndx = crossfilter(spendData),
yearDim = ndx.dimension(function(d) {return +d.Year;}),
spendDim = ndx.dimension(function(d) {return Math.floor(d.Spent/10);}),
nameDim = ndx.dimension(function(d) {return d.Name;}),
spendPerYear = yearDim.group().reduceSum(function(d) {return +d.Spent;}),
spendPerName = nameDim.group().reduceSum(function(d) {return +d.Spent;}),
spendHist = spendDim.group().reduceCount();
yearRingChart
.width(200).height(200)
.dimension(yearDim)
.group(spendPerYear)
.innerRadius(50);
spendHistChart
.width(300).height(200)
.dimension(spendDim)
.group(spendHist)
.x(d3.scale.linear().domain([0,10]))
.elasticY(true);
spendHistChart.xAxis().tickFormat(function(d) {return d*10}); // convert back to base unit
spendHistChart.yAxis().ticks(2);
spenderRowChart
.width(350).height(200)
.dimension(nameDim)
.group(spendPerName)
.elasticX(true);
dc.renderAll();
});
我认为这对开发者来说是一件愚蠢的事情,但对我来说却很难理解。我更新了Jsfiddle,但由于它是一个外部CSV,因此无法加载,但如果需要,您将拥有完整的代码(http://jsfiddle.net/nicart/6k96mzta/3/)。
你的代码中有几个错误(好吧,一个半)。
首先,csv的签名调用像
这样的用法d3.csv(file_name, function(data, error) {...
注意data
和error
在你的代码中是颠倒的。
console.log(data);
console.log(error);
请在线查看在您的特定浏览器中查看这些日志输出的正确方法。否则,调试Javascript是不可能的。
关于你的最后一个问题- d3没有同步加载CSV(或任何其他格式)的API。当然,您并不局限于d3来加载CSV,但没有包含它是有原因的-现代Javascript正在逐渐远离这些东西,以使页面响应性更好。
相关文章:
- 将JSON转换为放入Sdcard中的CSV文件
- 处理字段中带有换行符的csv文件-node.js
- 编辑CSV数组中的项目-快速CSV node.js
- csv数据中的新数组
- 如何读取csv文件并将其转换为javascript中的对象
- 在将csv文件中的数据分配给数组变量时增强了d3代码
- 从d3.js中的csv创建树层次结构
- 使用上传的html中的csv文件
- 如何让图表(饼图)在dc.js,d3和交叉过滤器(节点)中的.csv字符串字段上进行分组.js.js
- 使用节点的文本文件中的 CSV.js(CSV 包)
- 如何使用 d3 从 javascript 中的 csv 文件中检索数组
- URL 中的 CSV 字符串与 Angular UI 路由器
- 将ng-grid数据导出为angularjs中的CSV和PDF格式
- 写入节点.js中的 CSV
- 从Javascript对象中的CSV检索解析后的数据(使用Papa Parse)
- 无法从节点中的csv文件流读取重音字符
- 如何在Imacros中为条件循环加载javascript变量中的csv Col值
- 分析Meteor中的csv文件
- 地区,国家,城市从Javascript中的CSV排序
- 用D3.csv加载DC.JS中的CSV文件