在d3.js中截断末端的网格线

在d3.js中截断末端的网格线,d3.js,D3.js,我想切掉图表末尾的网格线。如果我删除xScale中的填充,则结束勾号“2016”的“16”将被删除。 我应该修复哪个部分,yScale、xScale还是网格线 //Define X axis xAxis = d3.axisBottom() .scale(xScale) .ticks(10)

我想切掉图表末尾的网格线。如果我删除xScale中的填充,则结束勾号“2016”的“16”将被删除。 我应该修复哪个部分,yScale、xScale还是网格线

                //Define X axis
                xAxis = d3.axisBottom()
                           .scale(xScale)
                           .ticks(10)
                           .tickFormat(formatTime);

                //Define Y axis
                yAxis = d3.axisLeft()
                           .scale(yScale)
                           .ticks(5);

                //Define Y axis gridlines
                function make_y_gridlines() {
                    return d3.axisLeft(yScale)
                    }

                //Create axes
                    svg.append("g")
                        .attr("class", "axis x")
                        .attr("transform", "translate(0," + (h - padding) + ")")
                        .call(xAxis);

                    svg.append("g")
                        .attr("class", "axis y")
                        .attr("transform", "translate(" + padding + ",0)")
                        .call(yAxis);

                    // add the Y gridlines
                    svg.append("g")
                        .attr("class", "grid")
                        .attr("transform", "translate(" + padding + ",0)")
                        .call(make_y_gridlines()
                            .tickSize(-w)
                            .tickFormat("")
                        )

由于x轴定义为:

.range([padding, w - padding * 2])
这意味着,图形从svg容器左侧的
1*padding
开始,到左侧的
width-2*padding
结束。这意味着图形的宽度(相对于svg容器的宽度)是
width-3*padding

因此,y网格线的实际大小应为
宽度-3*填充

在代码中,这意味着您可以只替换y网格线定义中的ticksize:

.tickSize(-w)
与:


这是
-(w-3*填充)
,因为默认情况下,滴答声位于y轴的左侧,这里我们希望它们位于右侧。

您能减少填充吗?您能提供一个完整的示例让我们使用它吗?@XavierGuihot
.tickSize(-w + 3*padding)