javascript - 创建了条形图,但高度没有往复变化

标签 javascript d3.js

Hello 使用以下代码使用 D3 创建了一个条形字符

var dataset = [5, 10, 13, 19, 21, 25, 22, 18, 15, 13,
11, 12, 15, 20, 18, 17, 16, 18, 23, 25];
var w = 500;
var h = 100;
var barpadding = 1;
var svg = d3.select("body")
            .append("svg")
            .attr("width", w)
            .attr("height", h);
var rect = svg.selectAll("rect")
              .data(dataset)
              .enter()
              .append("rect")
              .attr("x", function (d, i) {
                  return i * (w / dataset.length)
              })
              .attr("y", function (d) {
                  return (h - d);
              })
              .attr("height", function (d) {
                  return (d *2)
              })
              .attr("width", w / dataset.length - barpadding)
              .attr("fill", function (d) {
                  return "rgb(0, 0, " + (d * 10) + ")";
              });
              
    <div  class="bar"></div>
   

正如您在开始时所看到的,我的高度属性就像

 .attr("height", function (d) {
                  return (d *2)
              })

对应的图片是 enter image description here

现在我已经改成5次了

  .attr("height", function (d) {
                  return (d *5)
              })

但是不能enter image description here查看我的栏高度的任何变化有什么帮助吗??

fiddle link

最佳答案

您需要将“y”属性更改中的“d”变量以及高度相乘。所以 'y' 函数最终为:

.attr("y", function (d) {
     return (h - (d * 5));
})

如果您从“y”属性中的“h”中减去,而仅保留“y”属性不变,您会看到图表的高度确实发生了变化。 y 属性函数正在调节每个矩形的位置,以便将其乘以 2 或 5 的扩展部分隐藏在图形下方。

关于javascript - 创建了条形图,但高度没有往复变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35931881/

相关文章:

javascript - 如何获取 "writable"HTML 组件?

javascript - 为什么Function的原型(prototype)是一个函数,为什么Object继承自函数?

javascript - jQuery - 从元素中删除 onclick

javascript - 在 Javascript 中动态添加新表行

javascript - 如何添加条件转换?

javascript - d3.js Checking/Count 系列图表

javascript - 在 JavaScript 中计算上周开始日期(不是 -7 天前)

javascript - d3 - v5 文本渲染比 v3.5 慢?

javascript - D3.js 动态设置多种样式

javascript - d3 按 id 值将对象数组数据绑定(bind)到加载的 svg