我正在研究D3.js,我正在探索D3的每一个方面。在探索Grouped Bar Chart时,我可以通过JSON(而不是通过CSV)读取文件。
如果您可以在Grouped Bar Chart中看到他们正在使用data.csv
State,Under 5 Years,5 to 13 Years,14 to 17 Years,18 to 24 Years,25 to 44 Years,45 to 64
Years,65 Years and Over
CA,2704659,4499890,2159981,3853788,10604510,8819342,4114496
TX,2027307,3277946,1420518,2454721,7017731,5656528,2472223
NY,1208495,2141490,1058031,1999120,5355235,5120254,2607672
FL,1140516,1938695,925060,1607297,4782119,4746856,3187797
IL,894368,1558919,725973,1311479,3596343,3239173,1575308
PA,737462,1345341,679201,1203944,3157759,3414001,1910571
我想使用JSON文件构建相同的图形。 如何将此CSV文件转换为JSON文件并生成相同的图表?请提供帮助。
修改
我根据自己的需要自定义此图表。这是我的data.csv
State,Orders,Abandoned
0,300,500
1,400,600
2,500,700
3,600,800
4,700,900
5,800,1000
6,900,1100
7,1000,1200
8,700,900
9,600,700
10,550,750
所以在这里我对所有值进行了硬编码,图形以一种很好的格式出现。
现在,我正在使用JAXB编写Web服务,以使用JSON格式发送相同的数据。
{
"ordernumbertrack": [
{
"state":1,
"noOfCancellation": "12",
"noOfOrder": "30"
},
{
"state":2,
"noOfCancellation": "7",
"noOfOrder": "15"
},
{
"state":3,
"noOfCancellation": "15",
"noOfOrder": "35"
},
{
"state":4,
"noOfCancellation": "5",
"noOfOrder": "18"
},
{
"state":5,
"noOfCancellation": "10",
"noOfOrder": "55"
},
{
"state":6,
"noOfCancellation": "8",
"noOfOrder": "45"
},
{
"state":7,
"noOfCancellation": "5",
"noOfOrder": "20"
},
{
"state":8,
"noOfCancellation": "6",
"noOfOrder": "30"
},
{
"state":9,
"noOfCancellation": "4",
"noOfOrder": "22"
},
{
"state":10,
"noOfCancellation": "17",
"noOfOrder": "40"
},
{
"state":11,
"noOfCancellation": "2",
"noOfOrder": "14"
},
{
"state":12,
"noOfCancellation": "5",
"noOfOrder": "18"
}
]
}
我现在如何解析它?
答案 0 :(得分:4)
最后,我使用JSON数据创建了分组条形图。我编写了Web服务,将JSON数据发送到D3。
我的JSON与上面发布的问题
相同只有我在D3中所做的改变才是......
d3.json("rooturi/rest/ordernumbertracks", function(error, data) {
var ageNames = d3.keys(data.ordernumbertrack[0]).filter(function(key) { return key !== "state";
});
data.ordernumbertrack.forEach(function(d) {
d.ages = ageNames.map(function(name) { return {name: name, value: +d[name]}; });
});
x0.domain(data.ordernumbertrack.map(function(d) { return d.state; }));
x1.domain(ageNames).rangeRoundBands([0, x0.rangeBand()]);
y.domain([0, d3.max(data.ordernumbertrack, function(d) { return d3.max(d.ages, function(d) { return d.value; }); })]);
svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + height + ")")
.call(xAxis);
svg.append("g")
.attr("class", "y axis")
.call(yAxis)
.append("text")
.attr("transform", "rotate(-90)")
.attr("y", 6)
.attr("dy", ".71em")
.style("text-anchor", "end")
.text("");
var state = svg.selectAll(".state")
.data(data.ordernumbertrack)
.enter().append("g")
.attr("class", "g")
.attr("transform", function(d) { return "translate(" + x0(d.state) + ",0)"; });
我不能指望它就像那样简单:)