gpt4 book ai didi

javascript - D3.js:元素没有任何宽度

转载 作者:可可西里 更新时间:2023-11-01 13:00:10 26 4
gpt4 key购买 nike

我正在尝试将四个 rect 附加到我的 svg。我可以看到它们附加在 chrome 的开发工具中。但是,它们从未被渲染过,因为我似乎在传递宽度值时遇到了问题。

此外,在 D3 的版本 3 中,我在浏览器中收到以下错误消息:

d3.v3.min.js:1 Error: attribute width: Expected length, "NaN".

版本 4 中没有错误消息。

这是我的代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Test</title>
<script src="https://d3js.org/d3.v3.min.js"></script>
</head>
<body>
<script type="text/javascript">
var data = [20,3,60,800];

var width = 500,
height = 500;

var widthScale = d3.scale.linear()
.domain([0, 80])
.range(0, width);

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

var bars = svg.selectAll("rect")
.data(data)
.enter()
.append("rect")
.attr("width", function (d) { return widthScale(d); } )
.attr("height", 50)
.attr("fill", "steelblue")
.attr("y", function (d, i) { return i * 100});
</script>
</body>
</html>

v3 和 v4 之间的唯一区别是这一行 (scaleLinear):

var widthScale = d3.scaleLinear().domain([0, 80]).range(0, width);

非常感谢任何帮助。

最佳答案

range 必须是数组。文档很清楚:

linear.range([values]):

If values is specified, sets the scale's output range to the specified array of values

所以,而不是:

.range(0, width);

应该是:

.range([0, width]);

如果您使用 .range(0, width) D3 v3.x 返回 NaN,您会在控制台中看到:

Error: attribute width: Expected length, "NaN".

但是,D3 v4.x 返回 undefined,并且您在控制台中看不到任何错误消息。

这是您的工作代码:

        var data = [20,3,60,800];

var width = 500,
height = 500;

var widthScale = d3.scale.linear()
.domain([0, 80])
.range([0, width]);

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

var bars = svg.selectAll("rect")
.data(data)
.enter()
.append("rect")
.attr("width", function (d) { return widthScale(d); } )
.attr("height", 50)
.attr("fill", "steelblue")
.attr("y", function (d, i) { return i * 100});
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>

关于javascript - D3.js:元素没有任何宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40933264/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com