D3/SVG:如何通过修改范围来调整带有时间刻度的D3.SVG.axis的大小
D3/SVG: How to resize a d3.svg.axis with time scale by modifying range?
我一定遗漏了一些明显的东西。在经历了一天沮丧的头巾之后转向SO;-):
既然我已经使用d3.time.scale
和d3.svg.axis
创建了一个时域轴,以后如何通过更改范围来修改轴的大小?(保留域,但实际上改变了结果轴的大小)
我读过并遵循了许多不同的例子,但它们要么不使用时间尺度,要么只是改变了领域。我最接近的是http://bl.ocks.org/d3noob/7030f35b72de721622b8,但我似乎无法使该示例中的模式发挥作用。
我在http://codepen.io/anon/pen/MaZJYM这个代码有点有趣,因为我已经从ES6类中的代码中截取了一些片段,但它准确地显示了问题:按下按钮。当我像链接示例中那样更改范围并重新运行轴调用时,不会发生任何事情(除了奇怪的文本锚点更改??)。
您的更新功能应该是这样的:
function updateAxes() {
timeScale.range( [30, 500 ] );//give a slight x
d3.select( '.axis.month' )
.call( monthAxis )
.selectAll( ".tick text" )
.style( "text-anchor", "start" )
.attr( "x", 2 )
.attr( "y", 3 );
d3.select( '.axis.date' )//your code its .axis.day which is wrong
.call( dayAxis ).selectAll( ".tick text" )
.style( "text-anchor", "middle" )
.classed( "date", true )
}
注意:您必须在更新中将样式设置为轴,否则它将像在小提琴中一样跳到其他刻度上。
此处的工作示例
希望这能帮助
相关文章:
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 在D3.js中,有没有任何方法可以将x和y方向上的滚动事件绑定到平移svg
- D3.js生成有效的SVG,但不显示任何内容
- d3 svg differentiate onclick
- SVG实现的单调三次插值没有像d3这样的库
- 如何在d3.js中填充svg圆圈内的图像
- D3.js:如何在svg上移动鼠标时创建弹出事件
- D3.js:缩放svg时错过刻度线
- 基于数据d3.js绑定svg梯度
- 我如何才能让这个svg圆圈出现在我的d3路径上方,而不是下方
- d3与svg在处理元素时的对比
- d3日历视图:如何将所有内容放在一个svg中,而不是放在几个svg中
- 在工具提示中显示D3 SVG
- svg/d3中的选择
- SVG d3 |我可以动态添加内联样式吗?
- Svg D3.js如何使用条件选择
- 每次播放音频剪辑的时间元素被添加到SVG——d3.js
- 不知道如何正确关闭SVG / d3.js中的路径
- 缩放SVG d3.js(无事件)
- SVG d3圆形控件