从文件中读取d3数据,而不是将其编码到程序中
嗯,我目前使用的是Dimple,它是一种用于假人的D3。从文件中读取d3数据,而不是将其编码到程序中
我已经安排好,像这样我的数据:
var data = [
{ "Location": "Farringdon", "Jobs": 1 },
{ "Location": "Horsforth", "Jobs": 1 },
{ "Location": "Old Bailey", "Jobs": 1 },
{ "Location": "Caversham", "Jobs": 1 },
{ "Location": "Newton Heath", "Jobs": 1 },
{ "Location": "Hardham", "Jobs": 1 },
{ "Location": "Boscombe", "Jobs": 1 },
{ "Location": "Kings Worthy", "Jobs": 1 },
{ "Location": "Caversham", "Jobs": 1 },
{ "Location": "Lee", "Jobs": 3 },
{ "Location": "Wrexham", "Jobs": 1 },
{ "Location": "Woolstone", "Jobs": 2 },
{ "Location": "Seacombe", "Jobs": 1 },
{ "Location": "Painswick", "Jobs": 1 },
{ "Location": "Northwich", "Jobs": 1 },
{ "Location": "Royal Leamington Spa", "Jobs": 2 },
{ "Location": "Latchford", "Jobs": 1 },
{ "Location": "Holborn", "Jobs": 1 },
{ "Location": "Elton", "Jobs": 1 }
];
但它确实住在this dataset就是要大得多,看起来像这样:
Location,Jobs
Farringdon,1
Horsforth,1
Old Bailey,1
Caversham,1
Newton Heath,1
Hardham,1
Boscombe,1
Kings Worthy,1
Caversham,1
Lee,3
...
什么是最好的(即易用性和可维护性的平衡)将数据以一种动态方式添加到程序中的方式,而不是按照我所做的那样对其进行硬编码。
应用目前我使用它(试图)生成一个简单的条形图
:
<div id="chartContainer">
<script src="http://d3js.org/d3.v3.min.js"></script>
<script src="http://dimplejs.org/dist/dimple.v1.1.1.min.js"></script>
</div>
<script>
var svg = dimple.newSvg("#chartContainer", 1000, 1000);
var data = [
{ "Location": "Farringdon", "Jobs": 1 },
{ "Location": "Horsforth", "Jobs": 1 },
{ "Location": "Old Bailey", "Jobs": 1 },
{ "Location": "Caversham", "Jobs": 1 },
{ "Location": "Newton Heath", "Jobs": 1 },
{ "Location": "Hardham", "Jobs": 1 },
{ "Location": "Boscombe", "Jobs": 1 },
{ "Location": "Kings Worthy", "Jobs": 1 },
{ "Location": "Caversham", "Jobs": 1 },
{ "Location": "Lee", "Jobs": 3 },
{ "Location": "Wrexham", "Jobs": 1 },
{ "Location": "Woolstone", "Jobs": 2 },
{ "Location": "Seacombe", "Jobs": 1 },
{ "Location": "Painswick", "Jobs": 1 },
{ "Location": "Northwich", "Jobs": 1 },
{ "Location": "Royal Leamington Spa", "Jobs": 2 },
{ "Location": "Latchford", "Jobs": 1 },
{ "Location": "Holborn", "Jobs": 1 },
{ "Location": "Elton", "Jobs": 1 }
];
var chart = new dimple.chart(svg,data);
chart.setBounds(100, 100, 500, 300);
var x = chart.addCategoryAxis("x", "Location");
var y = chart.addMeasureAxis("y", "Jobs");
var lines = chart.addSeries(["project"], dimple.bar, [x, y]);
lines.data = data;
lines.lineWeight = 5;
lines.lineMarkers = true;
chart.draw();
</script>
如果该文件是在同一目录只需使用以下D3方法:
d3.csv("nameOfCsv.csv", function(thisData){...
你可以在这个函数里面做所有的工作,或者把'thisData'附加到一个变量上并在其他地方使用。
例子:
//set variable wherever you want, global if need be to be accessed by all functions.
//I would recommend not naming it just data as it may conflict
//but for the sake of this example
var data;
d3.csv("nameOfCsv.csv", function(thisData) {
data = thisData;
}
现在你可以在你的函数使用这些数据像这样:您目前如何使用它
var chart = new dimple.chart(svg, data);
这是你需要的吗?或者它是一种解析数据的方式,看起来像你需要它看起来? – thatOneGuy
所以所有这样的'图表' ,'var','lines'生活在这个函数中吗? –
是的,我认为这就是我的意思,但那就是让我感到困扰的原因 - 为什么所有这些东西都必须在关于它的函数中生活?是不是只是把数据放到一个对象上,然后以这种方式传递? –
? – thatOneGuy
啊。好的 - 等一下我会把它放在那里 –
你想从文件中读取它,即相同的目录? :d3.csv(“nameOfCsv.csv”,function(data){...或者你想使用文件打开并进入文件浏览器并以这种方式执行? – thatOneGuy