Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript D3折线图:将Y.domain值设置为以特定数字为中心_Javascript_D3.js_Graph_Charts - Fatal编程技术网

Javascript D3折线图:将Y.domain值设置为以特定数字为中心

Javascript D3折线图:将Y.domain值设置为以特定数字为中心,javascript,d3.js,graph,charts,Javascript,D3.js,Graph,Charts,我的折线图使用entries.value来生成y轴,但我想做的是将y轴的绝对中心设置为goal.value中的数字 在这个例子中,你会看到一条虚线,即goal.value,我想让它成为一条虚线,它位于图表的中心。(现在15号在哪里)我不知道怎么做 当前,只有当entries.value与虚线足够接近时,虚线才会显示在视图中 var entries = [{"date":"2016-01-06","value":15},{"date":"2015-11-17","value":15.4},{"da

我的折线图使用
entries.value
来生成y轴,但我想做的是将y轴的绝对中心设置为
goal.value
中的数字

在这个例子中,你会看到一条虚线,即goal.value,我想让它成为一条虚线,它位于图表的中心。(现在15号在哪里)我不知道怎么做

当前,只有当entries.value与虚线足够接近时,虚线才会显示在视图中

var entries = [{"date":"2016-01-06","value":15},{"date":"2015-11-17","value":15.4},{"date":"2015-11-11","value":16.5},{"date":"2015-09-24","value":15.1},{"date":"2015-08-22","value":15},{"date":"2015-08-12","value":15},{"date":"2015-07-30","value":14.6},{"date":"2015-07-19","value":14.8},{"date":"2015-07-18","value":14.9},{"date":"2015-07-12","value":14.9},{"date":"2015-07-08","value":14.9},{"date":"2015-06-29","value":14.3},{"date":"2015-06-21","value":14.5},{"date":"2015-06-18","value":14.7},{"date":"2015-06-09","value":15},{"date":"2015-06-08","value":14.1},{"date":"2014-12-06","value":13.4},{"date":"2014-09-10","value":13.1},{"date":"2014-08-01","value":14.2},{"date":"2014-07-07","value":15},{"date":"2014-05-31","value":14},{"date":"2014-05-24","value":15},{"date":"2014-05-14","value":15},{"date":"2014-05-13","value":14},{"date":"2014-05-08","value":14.5},{"date":"2014-05-02","value":15}],
    goal = {"value":13.5,"date":"2014-05-02"};

function enter(data, goal) {

    data.forEach(function(d) {
        d.date = parseDate(d.date);
        d.value = +d.value;
    });

    data.sort(function(a, b) {
        return a.date - b.date;
    });

  x.domain([data[0].date, data[data.length - 1].date]);

  // here is where the y axis is made. I need to edit this to somehow force it to use goal.value as the middle number
  y.domain(d3.extent(data, function(d) { return d.value; }));

  svg.append("path")
      .datum(data)
      .attr("class", "area")
      .attr("d", area);

  svg.append("path")
      .datum(data)
      .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")
        .attr("transform", "translate(" + width + ",0)")
      .call(yAxis);

    // here I make the dashed goal line
    svg.append("line")
        .attr("class", "goal")
        .attr("y1", y(goal.value))
        .attr("x1", x(data[0].date))
        .attr("y2", y(goal.value))
        .attr("x2", x(data[data.length - 1].date));

}

在轴上更改y域,使“goal.value”位于域的中心

  //y.domain(d3.extent(data, function(d) { return d.value; }));
  var e = d3.extent(data, function(d) { return d.value; });
  var e_max_delta = Math.max( Math.abs( e[0] - goal.value ), Math.abs( e[1] - goal.value ) );
  y.domain([goal.value - e_max_delta, goal.value + e_max_delta]);