加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ajax – d3.js差异图表示例如何与json数据一起工作?

发布时间:2020-12-16 02:45:42 所属栏目:百科 来源:网络整理
导读:我一直在努力得到这个例子: http://bl.ocks.org/mbostock/3894205 …与json一起工作,这样我就可以在带有实时数据的portlet中使用它.如果我发出警报但组件未呈现,我可以看到数据元素.我只显示y轴及其标签. 可能出错的部分是: d3.json("data.json",function(
我一直在努力得到这个例子:

http://bl.ocks.org/mbostock/3894205

…与json一起工作,这样我就可以在带有实时数据的portlet中使用它.如果我发出警报但组件未呈现,我可以看到数据元素.我只显示y轴及其标签.

可能出错的部分是:

d3.json("data.json",function(error,data) {
    if(error) return console.warn(error);
    data.data.forEach(function(d) {
        d.date = parseDate(d.date);
        d["San Francisco"]= +d["San Francisco"];
        d["New York"] = +d["New York"];
        count++;
        if (count>360) {
            alert(d.date + " " + d["San Francisco"] + " " + d["New York"]);
        }
    });

取自html文件

<!DOCTYPE html>
    <meta charset="utf-8">
    <style>

    body {
      font: 10px sans-serif;
    }

    .axis path,.axis line {
      fill: none;
      stroke: #000;
      shape-rendering: crispEdges;
    }

    .x.axis path {
      display: none;
    }

    .area.above {
      fill: rgb(252,141,89);
    }

    .area.below {
      fill: rgb(145,207,96);
    }

    .line {
      fill: none;
      stroke: #000;
      stroke-width: 1.5px;
    }

    </style>
    <body>
    <script src="http://d3js.org/d3.v3.min.js"></script>
    <script>

    var margin = {top: 20,right: 20,bottom: 30,left: 50},width = 960 - margin.left - margin.right,height = 500 - margin.top - margin.bottom;

    var parseDate = d3.time.format("%Y%m%d").parse;

    var x = d3.time.scale()
        .range([0,width]);

    var y = d3.scale.linear()
        .range([height,0]);

    var xAxis = d3.svg.axis()
        .scale(x)
        .orient("bottom");

    var yAxis = d3.svg.axis()
        .scale(y)
        .orient("left");

    var line = d3.svg.area()
        .interpolate("basis")
        .x(function(d) { return x(d.date); })
        .y(function(d) { return y(d["New York"]); });

    var area = d3.svg.area()
        .interpolate("basis")
        .x(function(d) { return x(d.date); })
        .y1(function(d) { return y(d["New York"]); });

    var svg = 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 + ")");
    var count =0;

    d3.json("data.json",data) {
    if(error) return console.warn(error);
    data.data.forEach(function(d) {
        d.date = parseDate(d.date);
        d["San Francisco"]= +d["San Francisco"];
        d["New York"] = +d["New York"];
        count++;
        if (count>360) {
            alert(d.date + " " + d["San Francisco"] + " " + d["New York"]);
        }
    });


      x.domain(d3.extent(data,function(d) { return d.date; }));

      y.domain([
        d3.min(data,function(d) { return Math.min(d["New York"],d["San Francisco"]); }),d3.max(data,function(d) { return Math.max(d["New York"],d["San Francisco"]); })
      ]);

      svg.datum(data);

      svg.append("clipPath")
          .attr("id","clip-below")
        .append("path")
          .attr("d",area.y0(height));

      svg.append("clipPath")
          .attr("id","clip-above")
        .append("path")
          .attr("d",area.y0(0));

      svg.append("path")
          .attr("class","area above")
          .attr("clip-path","url(#clip-above)")
          .attr("d",area.y0(function(d) { return y(d["San Francisco"]); }));

      svg.append("path")
          .attr("class","area below")
          .attr("clip-path","url(#clip-below)")
          .attr("d",area);

      svg.append("path")
          .attr("class","line")
          .attr("d",line);

      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("Temperature (oF)");
    });
     </script>

使用以下data.json文件

{"data":[
     {"date":"20111001","New York":83.4,"San Francisco":82.7},{"date":"20111002","New York":78.1,"San Francisco":79.9},{"date":"20111003","New York":73.3,"San Francisco":79.1},{"date":"20111004","New York":75.7,"San Francisco":78.8},{"date":"20111005","New York":84.2,"San Francisco":78.7},{"date":"20111006","New York":78.8,"San Francisco":77},{"date":"20111007","New York":77.9,"San Francisco":76.7},{"date":"20111008","New York":81.8,"San Francisco":76.8},{"date":"20111009","New York":89.3,{"date":"20111010","New York":91.2,"San Francisco":80.1},{"date":"20111011","New York":88.7,"San Francisco":81.1},{"date":"20111012","San Francisco":81.5},{"date":"20111013","New York":83.1,"San Francisco":84.3},{"date":"20111014","New York":86.9,"San Francisco":87.1},{"date":"20111015","New York":81.7,"San Francisco":84.6},{"date":"20111016","San Francisco":81.6},{"date":"20111017","New York":82.8,{"date":"20111018","New York":80.8,"San Francisco":79.2},{"date":"20111019","New York":82.1,"San Francisco":78.9},{"date":"20111020","New York":85.1,"San Francisco":77.2},{"date":"20111021","New York":75.6,"San Francisco":76.4},{"date":"20111022","New York":74.4,"San Francisco":80.7},{"date":"20111023","San Francisco":85.1},{"date":"20111024","New York":74.8,"San Francisco":80.9},{"date":"20111025","San Francisco":76.1},{"date":"20111026","New York":74.6,"San Francisco":74.6},{"date":"20111027",{"date":"20111028","New York":62.5,"San Francisco":78.1},{"date":"20111029","New York":60.9,"San Francisco":77.5},{"date":"20111030","New York":58.6,"San Francisco":77.7},{"date":"20111031","New York":64.2,"San Francisco":75.1},{"date":"20111101","New York":69.6,"San Francisco":77.9},{"date":"20111102","New York":67.2,{"date":"20111103","New York":70.1,"San Francisco":76.2},{"date":"20111104","San Francisco":70.5},{"date":"20111105","New York":63.5,"San Francisco":71.3},{"date":"20111106","New York":63.8,"San Francisco":72.6},{"date":"20111107","New York":68.9,"San Francisco":71.4},{"date":"20111108","New York":75.5,"San Francisco":70.6},{"date":"20111109","New York":73.7,{"date":"20222220","New York":77.7,"San Francisco":75.6},{"date":"20222221","New York":68.5,"San Francisco":73.9},{"date":"20222222","New York":66.8,"San Francisco":74},{"date":"20222223","New York":71.1,"San Francisco":73.8},{"date":"20222224","New York":76.8,"San Francisco":73.5},{"date":"20222225","New York":79.7,"San Francisco":73.4},{"date":"20222226","New York":76.5,"San Francisco":72.2},{"date":"20222227","San Francisco":72.7},{"date":"20222228","New York":61.5,"San Francisco":73.1},{"date":"20222229","New York":64.3,"San Francisco":69},{"date":"20111120","New York":74.1,"San Francisco":70.4},{"date":"20111121","San Francisco":71.1},{"date":"20111122","New York":69.4,"San Francisco":72.3},{"date":"20111123",{"date":"20111124","New York":64.1,{"date":"20111125","New York":70.3,"San Francisco":71.5},{"date":"20111126","New York":72.1,"San Francisco":73.6},{"date":"20111127",{"date":"20111128","New York":77.2,"San Francisco":71},{"date":"20111129","New York":79.1,"San Francisco":69.5},{"date":"20111130","New York":70.6,"San Francisco":69.8},{"date":"20111201","San Francisco":80.4},{"date":"20111202","New York":63.9,"San Francisco":82.2},{"date":"20111203","New York":62.1,"San Francisco":78.3},{"date":"20111204",{"date":"20111205","New York":70.2,{"date":"20111206","New York":74.2,"San Francisco":69.9},{"date":"20111207","San Francisco":68.6},{"date":"20111208","New York":63.4,"San Francisco":66.4},{"date":"20111209","New York":62.2,{"date":"20111210","New York":65.1,"San Francisco":72.1},{"date":"20111211","New York":53.8,"San Francisco":68.8},{"date":"20111212","New York":56.8,"San Francisco":67.4},{"date":"20111213","San Francisco":67.2},{"date":"20111214","New York":61.9,"San Francisco":66.1},{"date":"20111215",{"date":"20111216","San Francisco":67.9},{"date":"20111217","New York":60.6,{"date":"20111218","New York":49.1,"San Francisco":69.1},{"date":"20111219","New York":53.7,"San Francisco":68.3},{"date":"20111220","New York":65.8,"San Francisco":69.3},{"date":"20111221","New York":67.4,"San Francisco":68.4},{"date":"20111222","San Francisco":73.3},{"date":"20111223","New York":67.8,"San Francisco":67.5},{"date":"20111224","New York":54.9,{"date":"20111225","New York":55.9,"San Francisco":68.9},{"date":"20111226","New York":63.6,"San Francisco":65.9},{"date":"20111227","New York":62.9,{"date":"20111228","New York":66.2,{"date":"20111229","New York":50.8,"San Francisco":70.9},{"date":"20111230","New York":60.8,"San Francisco":72.9},{"date":"20111231","New York":69.8,"San Francisco":70.1},{"date":"20120101","New York":66.3,{"date":"20120102","New York":63.2,{"date":"20120103","New York":50.3,"San Francisco":69.7},{"date":"20120104","New York":39.2,{"date":"20120105","New York":52.1,{"date":"20120106","New York":61.2,{"date":"20120107","New York":67.1,{"date":"20120108","New York":66.1,{"date":"20120109","New York":54.7,{"date":"20120110","New York":59.4,"San Francisco":71.6},{"date":"20120111","New York":60.4,{"date":"20120112","New York":65.4,"San Francisco":71.9},{"date":"20120113","New York":60.7,"San Francisco":73.7},{"date":"20120114","New York":50.4,{"date":"20120115","New York":43.9,{"date":"20120116","New York":42.6,"San Francisco":65.3},{"date":"20120117","New York":59.8,"San Francisco":63.6},{"date":"20120118","San Francisco":65},{"date":"20120119","New York":46.3,"San Francisco":67.3},{"date":"20120120","New York":52.8,{"date":"20120121","New York":47.4,{"date":"20120122","New York":45.1,{"date":"20120123",{"date":"20120124","New York":68.7,{"date":"20120125","New York":63.1,{"date":"20120126","New York":57.1,{"date":"20120127","New York":68.2,{"date":"20120128","New York":63.7,"San Francisco":70.3},{"date":"20120129","New York":60.1,{"date":"20120130","New York":58.0,{"date":"20120131","San Francisco":70},{"date":"20120201","New York":70.4,{"date":"20120202",{"date":"20120203","New York":57.5,{"date":"20120204","San Francisco":72},{"date":"20120205","New York":56.5,{"date":"20120206","New York":59.1,{"date":"20120207","San Francisco":74.3},{"date":"20120208",{"date":"20120209",{"date":"20120210","New York":58.3,{"date":"20120211","New York":56.9,{"date":"20120212","New York":49.7,{"date":"20120213","New York":53.1,{"date":"20120214","New York":59.6,{"date":"20120215","New York":62.3,{"date":"20120216","New York":59.7,"San Francisco":72.4},{"date":"20120217","New York":66.0,{"date":"20120218",{"date":"20120219","San Francisco":67.8},{"date":"20120220","New York":58.1,"San Francisco":68.7},{"date":"20120221",{"date":"20120222","New York":65.5,{"date":"20120223","San Francisco":74.1},{"date":"20120224","New York":62.7,"San Francisco":75.9},{"date":"20120225","New York":62.6,"San Francisco":71.7},{"date":"20120226","San Francisco":67.7},{"date":"20120227","San Francisco":65.4},{"date":"20120228","New York":65.9,"San Francisco":67},{"date":"20120229",{"date":"20120301","New York":61.3,{"date":"20120302","San Francisco":68.1},{"date":"20120303","New York":67.6,"San Francisco":70.7},{"date":"20120304","San Francisco":75},{"date":"20120305","New York":58.5,{"date":"20120306","New York":52.9,{"date":"20120307","New York":63.3,{"date":"20120308","New York":71.2,"San Francisco":69.2},{"date":"20120309",{"date":"20120310","New York":57.2,{"date":"20120311",{"date":"20120312","New York":68.8,{"date":"20120313","New York":72.6,{"date":"20120314","New York":80.5,"San Francisco":75.2},{"date":"20120315",{"date":"20120316","New York":64.7,{"date":"20120317","San Francisco":68.2},{"date":"20120318","San Francisco":67.1},{"date":"20120319","New York":73.1,"San Francisco":65.8},{"date":"20120320","New York":77.8,{"date":"20120321","New York":77.5,{"date":"20120322","New York":77.3,{"date":"20120323",{"date":"20120324","New York":75.8,{"date":"20120325","New York":68.4,{"date":"20120326",{"date":"20120327",{"date":"20120328","New York":69.7,{"date":"20120329",{"date":"20120330","New York":66.5,"San Francisco":74.5},{"date":"20120331",{"date":"20120401","New York":65.3,{"date":"20120402","New York":68.1,{"date":"20120403",{"date":"20120404","New York":81.0,{"date":"20120405","New York":70.7,{"date":"20120406","New York":68.0,{"date":"20120407","San Francisco":69.4},{"date":"20120408",{"date":"20120409","New York":78.3,{"date":"20120410","New York":75.0,{"date":"20120411","New York":69.0,{"date":"20120412","New York":71.7,{"date":"20120413","San Francisco":70.2},{"date":"20120414","New York":75.2,{"date":"20120415","New York":82.3,{"date":"20120416","New York":82.9,{"date":"20120417","San Francisco":73.2},{"date":"20120418","New York":79.0,"San Francisco":73},{"date":"20120419",{"date":"20120420","San Francisco":75.8},{"date":"20120421","New York":78.2,"San Francisco":78},{"date":"20120422","New York":72.4,"San Francisco":72.8},{"date":"20120423","New York":71.6,{"date":"20120424","New York":69.3,{"date":"20120425","New York":72.5,{"date":"20120426","New York":70.5,"San Francisco":75.3},{"date":"20120427","New York":71.9,{"date":"20120428","San Francisco":74.7},{"date":"20120429",{"date":"20120430",{"date":"20120501","New York":77.4,{"date":"20120502",{"date":"20120503",{"date":"20120504",{"date":"20120505","New York":77.0,{"date":"20120506","New York":76.6,"San Francisco":76.5},{"date":"20120507",{"date":"20120508",{"date":"20120509","New York":79.2,{"date":"20120510","New York":81.1,{"date":"20120511",{"date":"20120512","New York":84.1,{"date":"20120513","New York":85.3,{"date":"20120514","San Francisco":76},{"date":"20120515","New York":82.0,{"date":"20120516","New York":83.8,{"date":"20120517","New York":84.5,{"date":"20120518",{"date":"20120519","New York":82.6,{"date":"20120520","New York":86.2,{"date":"20120521","New York":82.7,{"date":"20120522","New York":83.7,{"date":"20120523","New York":86.4,{"date":"20120524",{"date":"20120525","New York":85.4,"San Francisco":72.5},{"date":"20120526","New York":89.4,{"date":"20120527","New York":91.9,{"date":"20120528","New York":94.4,{"date":"20120529","New York":95.9,{"date":"20120530","New York":92.9,{"date":"20120531","New York":92.5,{"date":"20120601","New York":87.2,"San Francisco":74.8},{"date":"20120602","New York":88.3,{"date":"20120603","New York":87.7,{"date":"20120604","New York":81.9,{"date":"20120605",{"date":"20120606",{"date":"20120607","New York":86.7,{"date":"20120608","San Francisco":74.4},{"date":"20120609","New York":92.2,{"date":"20120610","New York":92.6,"San Francisco":80},{"date":"20120611","New York":89.2,{"date":"20120612",{"date":"20120613",{"date":"20120614",{"date":"20120615","New York":88.5,{"date":"20120616","New York":87.5,{"date":"20120617",{"date":"20120618",{"date":"20120619",{"date":"20120620","New York":97.9,{"date":"20120621","New York":108.0,{"date":"20120622","New York":102.0,{"date":"20120623","New York":97.0,{"date":"20120624","New York":95.4,{"date":"20120625","New York":90.9,{"date":"20120626","New York":85.9,{"date":"20120627","New York":93.5,{"date":"20120628","New York":97.4,"San Francisco":76.6},{"date":"20120629","New York":99.6,{"date":"20120630","New York":104.0,"San Francisco":78.4},{"date":"20120701","New York":101.0,{"date":"20120702",{"date":"20120703","New York":100.0,{"date":"20120704","New York":97.8,{"date":"20120705","New York":106.0,{"date":"20120706","New York":99.9,"San Francisco":74.9},{"date":"20120707","New York":103.0,{"date":"20120708",{"date":"20120709",{"date":"20120710","New York":96.1,{"date":"20120711","New York":96.3,{"date":"20120712","New York":95.8,{"date":"20120713","New York":97.2,{"date":"20120714","New York":99.3,{"date":"20120715","New York":98.9,{"date":"20120716",{"date":"20120717",{"date":"20120718",{"date":"20120719","New York":95.1,"San Francisco":77.1},{"date":"20120720","New York":88.4,{"date":"20120721","San Francisco":77.6},{"date":"20120722",{"date":"20120723","New York":95.6,{"date":"20120724","San Francisco":77.8},{"date":"20120725","New York":98.4,{"date":"20120726",{"date":"20120727","New York":99.4,{"date":"20120728",{"date":"20120729",{"date":"20120730",{"date":"20120731","New York":93.6,{"date":"20120801","New York":95.0,"San Francisco":75.4},{"date":"20120802","New York":97.7,{"date":"20120803","New York":99.7,{"date":"20120804",{"date":"20120805",{"date":"20120806","San Francisco":78.2},{"date":"20120807","New York":95.7,{"date":"20120808",{"date":"20120809","New York":98.6,{"date":"20120810",{"date":"20120811","New York":98.5,{"date":"20120812","New York":98.8,{"date":"20120813",{"date":"20120814","New York":96.8,{"date":"20120815","New York":96.7,{"date":"20120816",{"date":"20120817","New York":97.6,{"date":"20120818",{"date":"20120819","New York":90.4,{"date":"20120820","New York":91.8,{"date":"20120821",{"date":"20120822","New York":94.7,{"date":"20120823","New York":94.6,"San Francisco":75.7},{"date":"20120824","New York":96.0,{"date":"20120825","New York":96.2,{"date":"20120826","New York":93.4,{"date":"20120827",{"date":"20120828",{"date":"20120829",{"date":"20120830",{"date":"20120831",{"date":"20120901",{"date":"20120902",{"date":"20120903",{"date":"20120904",{"date":"20120905",{"date":"20120906","New York":94.2,"San Francisco":76.3},{"date":"20120907",{"date":"20120908","New York":97.1,{"date":"20120909","New York":89.7,{"date":"20120910","New York":87.8,{"date":"20120911","New York":84.0,{"date":"20120912","New York":88.1,{"date":"20120913",{"date":"20120914","New York":90.0,{"date":"20120915",{"date":"20120916","New York":86.3,{"date":"20120917","New York":87.0,{"date":"20120918","New York":92.8,{"date":"20120919",{"date":"20120920",{"date":"20120921",{"date":"20120922","New York":85.5,{"date":"20120923","New York":85.7,{"date":"20120924","New York":80.4,{"date":"20120925","New York":83.2,{"date":"20120926",{"date":"20120927",{"date":"20120928",{"date":"20120929","New York":82.5,{"date":"20120930","San Francisco":75.1}]}

解决方法

问题是您的所有数据都嵌套在数据元素中.您需要更新代码以反映这一点.具体来说就行了

x.domain(d3.extent(data,function(d) { return d.date; }));

y.domain([
    d3.min(data,d["San Francisco"]); })
]);

svg.datum(data);

需要改为

x.domain(d3.extent(data.data,function(d) { return d.date; }));

y.domain([
    d3.min(data.data,d3.max(data.data,d["San Francisco"]); })
]);

svg.datum(data.data);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读