我是这种论坛的新手,我的英语水平不是最好的,但我会尽力做到最好:)。
在nvd3 网站上有一个带有 View Finder 的折线图示例。这是我在过去 2 天内一直在使用的一个(examples\lineWithFocusChart.html,nvd3 zip 包)。我只对示例的格式进行了一项更改:我在 X 轴上使用日期而不是普通数字。
这是我的2个问题:
1- 如何在 x 轴上旋转所有刻度标签?我的日期太长(%x %X,日期和时间),我希望它们轮换以改善观看效果。我只能旋转 2 个刻度(x 轴的最大值和最小值,边缘)。这是我在 nv.d3.js 的“switch (axis.orient())”块中修改的代码:
case 'bottom':
axisLabel.enter().append('text').attr('class', 'axislabel')
.attr('text-anchor', 'middle')
.attr('y', 25);
axisLabel
.attr('x', scale.range()[1] / 2);
if (showMaxMin) {
var axisMaxMin = wrap.selectAll('g.axisMaxMin')
.data(scale.domain());
axisMaxMin.enter().append('g').attr('class', 'axisMaxMin').append('text');
axisMaxMin.exit().remove();
axisMaxMin
.attr('transform', function(d,i) {
return 'translate(' + scale(d) + ',0)'
})
.select('text')
.attr('dy', '.71em')
.attr('y', axis.tickPadding())
.attr('text-anchor', 'middle')
.text(function(d,i) {
return ('' + axis.tickFormat()(d)).match('NaN') ? '' : axis.tickFormat()(d)
})
.attr('transform', 'rotate(45)')
;
d3.transition(axisMaxMin)
.attr('transform', function(d,i) {
return 'translate(' + scale.range()[i] + ',0)'
});
}
break;
如您所见,我已将 .attr('transform', 'rotate(45)') 作为新属性放置,因此旋转了最大和最小刻度(axisMaxMin)。我已经尝试过这种方式(在整个 nv.d3.js 文件中)以及我认为与 x 刻度相关的其他文本元素,但它不起作用。任何想法?为了显示旋转的所有 X 标签,我必须将转换放在哪里?
2- 在示例中,当您将鼠标放在线条上时,不会触发任何事件来显示与该点关联的值 (x,y)。我怎样才能显示这些值?我尝试复制粘贴在显示这些值的其他示例中使用的方法,但它不起作用。任何想法?
感谢您分享您的时间和知识:D。