javascript - 努力获取修改后的 JSON 格式的图表

标签 javascript json d3.js nvd3.js

我对 d3js 很陌生。我使用一个 json 文件制作了一个条形图。它工作得很好。但现在由于一些不可避免的原因我改变了JSON文件格式。
我以前的json是:

[ 
    {"name":"bike","value":98},
    {"name":"car","value":52},
    {"name":"bus","value":20},
    {"name":"van","value":65} 
] 

代码是:

d3.json("sample.json", function(error, data) {
    x.domain(data.map(function(d) { return d.name; }));
    y.domain([0, d3.max(data, function(d) { return d.value; })]);

    var chart = d3.select("body")
        .append("svg")
        .attr("width", width + margin.left + margin.right)
        .attr("height", height + margin.top + margin.bottom)
        .append("g")
        .attr("transform", "translate(" + margin.left + "," + margin.top + ")");

    chart.append("g")
        .attr("class", "x axis")
        .attr("transform", "translate(0," + height + ")")
        .call(xAxis);

    chart.append("g")
        .attr("class", "y axis")
        .call(yAxis);

    var bar = chart.selectAll(".bar")
        .data(data)
        .enter().append("g");

    bar.selectAll("rect")
        .data(data)
        .enter().append("rect")
        .attr("class", "bar")
        .attr("x", function(d) { return x(d.name); })
        .attr("y", function(d) { return y(d.value); })
        .attr("width", x.rangeBand())
        .attr("height", function(d) { return height - y(d.value); });
});

这是我的新 json 文件:

[ 
    {"category":"bike","bike":38,"car":0,"bus":0,"van":0},
    {"category":"car","bike":0,"car": 50,"bus":0,"van":0,},
    {"category":"bus","bike":0,"car": 0,"bus":14,"van":0},
    {"category":"van","bike":0,"car": 0,"bus":0,"van":43} 
]

我想要一张与上一张相同的图表。带有“0”(零)的数据不应出现在图表中。 请帮助我。预先感谢:)

最佳答案

您没有提供新格式的解释,并且我不确定您以前的格式是如何工作的(给定 x 属性设置),但调整到新格式应该如下简单如

.attr("x", function(d) { return x(d.category); })
.attr("y", function(d) { return y(d[d.category]); })

其他地方也有类似的变化。 (例如高度)

或者也许我错过了一些东西?

关于javascript - 努力获取修改后的 JSON 格式的图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27690410/

相关文章:

Python:如何发送多个 HTTP 请求并接收响应?

javascript - 如何在 JavaScript 中显示评论线程层次结构?

javascript - 识别给定数组是 d3 选择

javascript - Jquery - 获取 HH :MM format between two dates 中的时间

javascript - 如何检测浏览器是否是移动浏览器并使用 javascript "if else"显示不同尺寸的视频?

c# - 处理每次都不相同的 JSON 响应

javascript - NVD3.js 将悬停/单击事件绑定(bind)到 xAxis 刻度 <line>

javascript - 没有CSS的d3.js中的轴文本样式

javascript - 如何阻止元素在 JavaScript 事件期间更改(属性)?

javascript - 在按钮上使用 onmouseover 事件时无法使图像消失