gpt4 book ai didi

javascript - 在 D3 中对齐轴

转载 作者:行者123 更新时间:2023-12-03 06:05:06 29 4
gpt4 key购买 nike

我能够使用我的drawLine函数渲染下面的折线图。正如您所看到的,x 轴刻度线与这些点并不完全对齐。如何将 x 轴刻度线向左移动,以便“10 Sep”刻度线位于 y 轴的正下方?

Line Graph

这是我的代码:

function drawLine(line_data) {
var vizLine = line_data;

var date_format = d3.time.format("%d %b");
var xline = d3.time.scale()
.range([0, width]);

var yline = d3.scale.linear()
.range([height, 0]);

var xAxisline = d3.svg.axis()
.scale(xline)
.orient("bottom")
.tickFormat(date_format);

var yAxisline = d3.svg.axis()
.scale(yline)
.orient("left")
.tickFormat(d3.format("d"));

var line = d3.svg.line()
.x(function(d) {
return xline(d.date2);
})
.y(function(d) {
return yline(d.books);
});

var div = d3.select("body").append("div")
.attr("class", "tooltip")
.style("opacity", 0);

var lineGraph = d3.select("body").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 + ")");

vizLine.forEach(function(d) {
d.date = d[0];
d.books = +(d[1]);
d.date2 = Date.parse(d.date);
});

xline.domain(d3.extent(vizLine, function(d) {
return d.date2;
}));
yline.domain([0, d3.max(vizLine, function(d) {
return (d.books + 1);
})]);

lineGraph.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + height + ")")
.call(xAxisline);

lineGraph.append("path")
.datum(vizLine)
.attr("class", "line")
.attr("d", line);

lineGraph.selectAll("dot")
.data(vizLine)
.enter().append("circle")
.attr("r", 5)
.attr("cx", function(d) {
return xline(d.date2);
})
.attr("cy", function(d) {
return yline(d.books);
})
.on("mouseover", function(d) {
div.transition()
.duration(200)
.style("opacity", .9);
div.html(d.date + "<br/>" + d.books + " books")
.style("width", 70)
.style("height", 35)
.style("left", (d3.event.pageX) + "px")
.style("top", (d3.event.pageY - 28) + "px");
})
.on("mouseout", function(d) {
div.transition()
.duration(500)
.style("opacity", 0);
});
}

最佳答案

可能将非零 x 分量应用于 x 轴的平移可以纠正您的错误,但在不查看整个代码的情况下很难判断。

类似于

lineGraph.append("g")
.attr("class", "x axis")
.attr("transform", "translate(" + margin.left + "," + height + ")")
.call(xAxisline);

关于javascript - 在 D3 中对齐轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39584163/

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