为什么如果我加上这两个陈述,条形图就会反转
D3.js: Why the bar chart turns around if I add this two statements
嘿,我有一个条形图,我知道在svg中x=0和y=0在左上角,所以图形向下显示。如果我加上一些表述,它就反过来了。
var w = 500;
var h = 100;
var barPadding = 1;
var dataset = [5, 4, 6, 7, 8, 10, 2, 3, 4, 5, 6, 25, 34, 54, 64, 32, 11, 32, 42, 5, 10, 15, 20, 25, 30, 35, 40];
var svg = d3.select("body")
.append("svg")
.attr("width", w)
.attr("height", h);
var rectangles = 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("width", w / dataset.length - barPadding)
.attr("height", function(d) {
return d * 4;
})
.attr("fill", function(d) {
return "rgb(0, 0, " + (d * 10) + ")";
});
<script data-require="d3@4.0.0" data-semver="4.0.0" src="https://d3js.org/d3.v4.min.js"></script>
我有两个问题,A)为什么在例子中他们用h-d来表示y的位置?例如,如果svg的高度是100,而数据集上的数字是60,那么不应该将条置于距左上角y=40的位置上吗?然而,当我渲染这个时,情况并非如此,所有的条形
都显示在相同的y位置上。为什么用给定的值正确渲染条形图?在这种情况下,是什么让条形图"从底部开始增长",因为如果我做数学计算,它会让我期望不同的东西。
在本例中,y值在正确位置被截断的原因是svg的高度为100。但是如果仔细检查svg,就会发现每个矩形都超出了svg的底部,它们只是不可见,因为没有溢出。
h-d对于起始y位置是正确的,如果值为60,那么(100-60)将等于40,正如您正确陈述的那样。然而,实际高度应该是d而不是d * 4。我不知道d * 4从何而来
如果你的值是60,那么y将是40,高度将是60这将扩展到svg的底部。
相关文章:
- JQuery合并了keyup和focusout两个函数
- 如何使用 node.js 比较两个 json 数组
- 为复选框javascript指定两个值
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- 单击时切换两个图像
- 我可以'我似乎不知道如何修复javascript中的两个lint.有人能帮我理解吗
- 基于两个条件退出While循环
- 如何在这里将两个值最低的数字相加
- 组合两个javascript函数
- 如何使用offer/answer交换来自两个对等连接的流
- jsf中两个字符串的颜色代码差异
- 加载两个具有相同父密钥名称的json文件
- 在Qualtrics中,介绍如何动态连接两个滑块
- 访问$.ajax()函数中的两个不同数组
- 如何在three.js上添加两个向量
- 如何在datetimepicker中使用两个验证器
- 如何在javascript中获取两个日期之间的周六和周日的日期
- 咖啡脚本 - 如何干涸这两个陈述
- 为什么如果我加上这两个陈述,条形图就会反转
- 两个令人困惑的陈述,使用哪一个以及为什么