Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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.js-Barchart没有正确地标准化为SVG高度?_Javascript_D3.js_Normalization_Data Visualization_Bar Chart - Fatal编程技术网

Javascript 为什么我的简单D3.js-Barchart没有正确地标准化为SVG高度?

Javascript 为什么我的简单D3.js-Barchart没有正确地标准化为SVG高度?,javascript,d3.js,normalization,data-visualization,bar-chart,Javascript,D3.js,Normalization,Data Visualization,Bar Chart,我是D3新手,我非常喜欢它,但是在我第一次尝试构建一个简单的条形图时,我被困在了一个点上,我想将条形图的高度标准化为SVG元素的完整高度。因此,最高的数据值应缩放到SVG元素的整个高度。所有其他的都应该是相对的。我是舒尔,这是一个愚蠢的错误,但我看不出来。请帮忙! thnx 这是密码 var dataset = [ 50, 43]; var colorSet = ['rgb(143,172,206)', 'rgb(117,122,184)']; var w = 260; var

我是D3新手,我非常喜欢它,但是在我第一次尝试构建一个简单的条形图时,我被困在了一个点上,我想将条形图的高度标准化为SVG元素的完整高度。因此,最高的数据值应缩放到SVG元素的整个高度。所有其他的都应该是相对的。我是舒尔,这是一个愚蠢的错误,但我看不出来。请帮忙! thnx

这是密码

  var dataset = [ 50, 43];
  var colorSet = ['rgb(143,172,206)', 'rgb(117,122,184)'];

  var w = 260;
  var h = 200;
  var barPadding = 7;



  var svg = d3.select("body")
              .append("svg")
              .attr("width", w)
              .attr("height", h);

  var x = d3.scale.ordinal()
      .domain(dataset)
      .rangeBands([0, w - (barPadding*dataset.length)]);

  var y = d3.scale.linear()
              .domain([0, 100]) //d3.max(dataset) // <- HERE SHOULD BE d3.max(dataset) CORRECT?
              .range([0,h]);

  svg.selectAll("rect")
     .data(dataset)
     .enter()
     .append("rect")
     .attr("x", function(d, i) {
        return i * (w / dataset.length);
      })
     .attr("y",  y)                             // <-- SHOULDN'T BE HERE h - y?
     .attr("width", x.rangeBand()) 
     .attr("height", y)
     .attr("fill", function(d, i) {
        return colorSet[i];
      });


svg.append("line")
  .attr("x1", 0)
  .attr("x2", w * dataset.length)
  .attr("y1", h - 0.5)
  .attr("y2", h - 0.5)
  .style("stroke", "#000");
var数据集=[50,43];
var colorSet=['rgb(143172206)''rgb(117122184)';
var w=260;
var h=200;
var=7;
var svg=d3.选择(“主体”)
.append(“svg”)
.attr(“宽度”,w)
.attr(“高度”,h);
var x=d3.scale.ordinal()
.domain(数据集)
.rangeBands([0,w-(barPadding*dataset.length)]);
变量y=d3.scale.linear()

.domain([0,100])//d3.max(数据集)//不能对y位置和高度使用相同的y范围

y位置需要范围([h,0]),高度需要范围([0,h])


要确认这一点,当数据点为100%时,您希望y位置为0,高度为容器高度。当数据为0%时,您希望y位置为容器的高度,高度为0。

我还尝试将范围反转为.range([h,0]);还有很多其他的东西…是的,并相应地使用y和高度属性的比例函数。