隐藏系列后,轴标签恢复到原始位置

时间:2014-07-07 07:42:03

标签: javascript d3.js nvd3.js

my NVD3 chart here中,我已将X轴标签向下移动,以便与垂直对齐的日期一起移动。为此我做了:

xTicks.select('.nv-axislabel').attr("y", 90);  // line # 81 in JS

现在的问题是,如果我使用右上角的控件隐藏任何系列,则此X轴标签会恢复到原始位置,这会使日期变差。

如何让它保持新的位置,不变?

jsFiddle

2 个答案:

答案 0 :(得分:2)

有些肮脏的解决方案,但可能已经足够好了:

更改标签的y属性后,删除内部使用的类以选择标签并重置其属性:

xTicks.select('.nv-axislabel')
    .attr("y", 90)
    .classed({'nv-axislabel':false});

然后,就像看起来d3只是在不需要的位置创建一个新标签,你可以将它添加到CSS文件中:

.nv-x .nv-axislabel {
    display:none;
}

我将其添加为规则,因为以编程方式(使用.style())执行此操作需要太长时间,您可以看到它闪烁。

FIDDLE

答案 1 :(得分:2)

如果您更新NVD3库,请更新为版本1.1.11b

您可以使用旋转标签的内置功能。试试这个:

chart.xAxis
 .tickPadding(-5).rotateLabels(-90);

x的{​​{1}}属性更改为.tick major > text,以便将位置降低一点。


然后你需要以下代码:

10


希望它有所帮助