gpt4 book ai didi

javascript - D3.js 轴不支持 SVG 大小

转载 作者:行者123 更新时间:2023-12-02 14:42:05 25 4
gpt4 key购买 nike

我似乎无法将我的 xaxisyaxis 放置在 SVG 的底部和左侧。

<!DOCTYPE html>
<html>
<head>
<style>
svg {width:350px; height:280px;border-style:solid;}
</style>
</head>

<body>
<svg />

<script src="https://d3js.org/d3.v3.min.js" charset="utf-8"></script>
<script>
var x = d3.scale.linear().domain([0, 80]).range([0, 200]);
var y = d3.scale.linear().domain([0, 80]).range([200, 0]);

var xaxis = d3.svg.axis().scale(x).orient('bottom').ticks(4);
var yaxis = d3.svg.axis().scale(y).orient('left').ticks(4);

var svg = d3.select('svg');
//svg.attr('width', 300).attr('height', 300);
svg.append('g').attr('class', 'xaxis').call(xaxis);
svg.append('g').attr('class', 'yaxis').call(yaxis);
</script>
</body>
</html>

axes not on their proper place

就好像axes完全无法找到SVG尺寸。

我发现我的轴实例化与教程中的轴实例化之间的唯一区别是它们经常动态创建 SVG 元素。不过,我更愿意手动将 SVG 放置在 HTML 中的任意位置...

最佳答案

这里发生了一些事情。

看看我的 fiddle https://jsfiddle.net/guanzo/e0xp6ae3/

-scale(x).orient('bottom') 指示轴刻度的位置,而不是轴本身的位置。我通过添加 .attr('transform','translate(0,'+280+')') 修复了此问题,其中 280 是所需的轴 y 高度。

-svg 默认隐藏其溢出。在我的第一个 fiddle 中,我用 position:relativeleft:20px 组合了一个解决方案。您会发现这是一个糟糕的解决方案。

D3 约定是使用边距,如本例 https://bl.ocks.org/mbostock/3019563 .

通过动态创建 svg 元素,我们可以实现更简洁、更灵活的代码。查看我按照 D3 方式更新的 fiddle 。

https://jsfiddle.net/guanzo/e0xp6ae3/1/

基本上,轴的空间由边距给出。 svg 的宽度和高度围绕边距发挥作用。当然,您仍然可以使用硬编码的 svg,只需更改代码即可适应。

关于javascript - D3.js 轴不支持 SVG 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36926755/

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