gpt4 book ai didi

javascript - 轴未与钢筋对齐

转载 作者:行者123 更新时间:2023-12-03 10:35:23 27 4
gpt4 key购买 nike

我有这个 d3 代码,但我无法将条形图与 x 轴对齐。我希望代表小时(范围 0h-23h)的数字出现在小时数的中间,即 y 值。

变量 times 使用 24 个值(索引 0 到 23 h)进行实例化。欢迎任何回应或想法。现在是什么样子;

/image/m1QOi.png

var times = buildTimeTable(data);
var margin = {top: 20, right: 10, bottom: 20, left: 10};
var width = 500- margin.left - margin.right, height = 200- margin.top - margin.bottom;
var x = d3.scale.linear().domain([0, 23]).range([0, width]);
var y = d3.scale.linear().domain([0, Math.max.apply(Math, times)]).range([height, 0]);
var xAxis = d3.svg.axis().orient("bottom").scale(x).ticks(24);
var yAxis = d3.svg.axis().orient("left").scale(y);
d3.select("#statistics-hours > svg").remove();
var svg = d3.select("#statistics-hours").append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");;
var bar = svg.selectAll(".bar").data(times).enter().append("rect")
.attr("class", "bar")
.attr("width", (width)/times.length - 5)
.attr("height", function(d){return height - y(d);})
.attr("x", function(d, i){return i * (width/times.length);})
.attr("y", function(d){return y(d);})
.attr("fill", "steelblue");
svg.append("g").attr("class", "axis").attr("transform", "translate("+ margin.left +"," + (height) + ")").call(xAxis);
svg.append("g").attr("class", "axis").attr("transform", "translate(" + (margin.left) + ",0)").call(yAxis);

最佳答案

您可能需要考虑使用序数尺度。

var x = d3.scale.ordinal().domain(d3.range[0,24]).rangeRoundBands([0,width],.1)

现在,x 只是

.attr('x',function(d){return x(d);})

宽度只是...

.attr('width',function(d){return x.rangeBand();})

关于javascript - 轴未与钢筋对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29010928/

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