使用外部JSON文件填充D3图表

帕乔·哈克曼

我创建了一个D3图表。当前,填充图表的数据在同一html页面上。今后,此图表的数据将由外部JSON文件填充。JSON由输入到表单中的值创建。当我尝试用d3.json函数替换“硬编码”数据时,我完全破坏了图表,有人能建议我要去哪里吗?当前文件:

Chart.html

<script>
var data = [
    {key: "ING_SW_CB",      value: 10 },
    {key: "SB_SW_CB",            value: 9 },
    {key: "NG3_SW_CB",       value: 8 },
    {key: "Mould_Close",        value: 12 },
    {key: "Leak_Test",          value: 10 },
    {key: "ML_Load",            value: 7 },
    {key: "Pre_Heat",           value: 12 },
    {key: "Dispense",           value: 10 },
    {key: "A310",                   value: 10 },
    {key: "Gelation",               value: 11 },
    {key: "Platen",                 value: 9 },
    {key: "Mainline_Unload",  value: 13},
    {key: "De_mould",           value: 10},
    {key: "Clean_Up",           value: 11},
    {key: "Soda_Blast",             value: 12},
    {key: "Miscellaneous",       value: 12}
];
var w = 800;
var h = 450;
var margin = {
top: 58,
bottom: 100,
left: 80,
right: 40
};
var width = w - margin.left - margin.right;
var height = h - margin.top - margin.bottom;

var x = d3.scale.ordinal()
    .domain(data.map(function(entry){
        return entry.key;
    }))
    .rangeBands([0, width],.2);
var y = d3.scale.linear()
    .domain([0, d3.max(data, function(d){
        return d.value;
    })])
    .range([height, 0]);
var xAxis = d3.svg.axis()   
                  .scale(x)
                  .orient("bottom");
var yAxis = d3.svg.axis()
                  .scale(y)
                  .orient("left");
var yGridLines = d3.svg.axis()
                         .scale(y)
                         .tickSize(-width, 0, 0)
                         .tickFormat("")
                         .orient("left");
var svg = d3.select("body").append("svg")
        .attr("id", "chart")
        .attr("width", w)
        .attr("height", h);
var chart = svg.append("g")
        .classed("display", true)
        .attr("transform", "translate(" + margin.left + "," + margin.top +           ")");

function plot(params){
this.append("g")
     .call(yGridLines)
     .classed("gridline", true)
     .attr("transform", "translate(0,0)")
this.selectAll(".bar")
    .data(params.data)
    .enter()
        .append("rect")
        .classed("bar", true)
        .attr("x", function (d,i){
            return x(d.key);
        })
        .attr("y", function(d,i){
            return y(d.value);
        })
        .attr("height", function(d,i){
            return height - y(d.value);
        })
        .attr("width", function(d){
            return x.rangeBand();
        });
this.selectAll(".bar-label")
    .data(params.data)
    .enter()
        .append("text")
        .classed("bar-label", true)
        .attr("x", function(d,i){
            return x(d.key) + (x.rangeBand()/2)
        })
        .attr("dx", 0)
        .attr("y", function(d,i){
            return y(d.value);
        })
        .attr("dy", -6)
        .text(function(d){
            return d.value;
        })
this.append("g")
     .classed("x axis", true)
     .attr("transform", "translate(" + 0 + "," + height + ")")
     .call(xAxis)
            .selectAll("text")
                .style("text-anchor", "end")
                .attr("dx", -8)
                .attr("dy" ,8)
                .attr("transform", "translate(0,0) rotate(-45)");

this.append("g")
     .classed("y axis", true)
     .attr("transform", "translate(0,0)")
     .call(yAxis);

this.select(".y.axis")
    .append("text")
    .attr("x", 0)
    .attr("y", 0)
    .style("text-anchor", "middle")
    .attr("transform", "translate(-50," + height/2 + ") rotate(-90)")
    .text("Downtime [Hrs]");

this.select(".x.axis")
    .append("text")
    .attr("x", 0)
    .attr("y", 0)
    .style("text-anchor", "middle")
    .attr("transform", "translate(" + width/2 + ",80)")
    .text("[Stations]");    
    // title 
this.append("text")
    .attr("x", (width / 2))             
    .attr("y", 0 - (margin.top / 2))
    .attr("text-anchor", "middle")  
    .style("font-size", "16px") 
    .style("text-decoration", "underline")  
    .text("Over Mould");    
}
plot.call(chart, {data: data});
</script>   

我希望使用以下外部JSON文件替换“数据”变量:

[
  [
    {
        "key": "ING_SW_CB",
        "value": "5"
    },
    {
        "key": "SB_SW_CB",
        "value": "5"
    },
    {
        "key": "NG3_SW_CB",
        "value": "5"
    },
    {
        "key": "Mould_Close",
        "value": "5"
    },
    {
        "key": "Leak_Test",
        "value": "5"
    },
    {
        "key": "ML_Load",
        "value": "5"
    },
    {
        "key": "Pre_Heat",
        "value": "5"
    },
    {
        "key": "Dispense",
        "value": "5"
    },
    {
        "key": "A310",
        "value": "5"
    },
    {
        "key": "Gelation",
        "value": "5"
    },
    {
        "key": "Platen",
        "value": "5"
    },
    {
        "key": "Mainline_Unload",
        "value": "5"
    },
    {
        "key": "De_mould",
        "value": "5"
    },
    {
        "key": "Clean_Up",
        "value": "5"
    },
    {
        "key": "Soda_Blast",
        "value": "5"
    },
    {
        "key": "Miscellaneous",
        "value": "5"
    }
  ]
]

非常感谢您的宝贵时间,我已经准备好开始并开始运行!

托尼

您的json文件格式错误。它嵌套过多:

[
  [
   ...
  ]
]

请参阅:http//plnkr.co/edit/QDiAgFfPpRoXRdvexREF?p = preview

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用请求正文将 JSON 数据从 spring mvc 填充到 d3 图表

来自分类Dev

D3.js - 如何使用内联 JSON 作为 D3 图表的数据集,而不是 csv/tsv/json 文件

来自分类Dev

d3图表显示在引导程序div外部

来自分类Dev

d3图表显示在引导程序div外部

来自分类Dev

当存在多个json文件时,将d3图表的svg附加到单独的div

来自分类Dev

从外部json数据到html文件创建3D Google图表

来自分类Dev

使用d3从json文件中选择特定项目

来自分类Dev

转换d3图表以从变量内的json加载数据

来自分类Dev

D3图表-组合多个图表

来自分类Dev

读取一个巨大的 csv 文件并使用 d3 在 Javascript 中填充地图

来自分类Dev

使用D3的超链接图表栏

来自分类Dev

使用D3的超链接图表栏

来自分类Dev

使用JavaScript / D3的图表上的间距条

来自分类Dev

使用d3拖动和缩放图表

来自分类Dev

d3条形图使用rangeRoundBands-为什么会有外部填充?

来自分类Dev

用CSV文件填充下拉列表-d3

来自分类Dev

使用 d3 和外部 javascript 文件将 CSV 转换为 HTML 表

来自分类Dev

D3 - 从外部文件读取更新数据后的转换

来自分类Dev

来自外部 js 文件的 D3 SVG

来自分类Dev

D3使用图案用图像填充形状

来自分类Dev

给定d3中有1个文件馈送的1个图表+要绘制给定的X文件+ d3数组,则要绘制X个图表

来自分类Dev

D3多系列图表

来自分类Dev

图表中的D3工具提示

来自分类Dev

更改图表d3的颜色

来自分类Dev

多线顺序d3图表

来自分类Dev

悬停效果不错(D3图表)

来自分类Dev

d3图表未正确更新

来自分类Dev

如何正确缩放d3图表?

来自分类Dev

D3图表缺少数据