使用D3,我想要一个Y轴标签,该标签旋转了-90º且居中在Y轴上。我认为这将是一块蛋糕,并写了以下情况:如何在SVG中居中90º旋转文本
// Y Axis Label
svg.append('svg:text')
.attr('class', 'y label')
.attr('text-anchor', 'middle')
.attr('y', 0)
.attr('width', height)
.attr('transform', 'translate(-' + yAxisSpacing + ',' + height + ') rotate(-90)')
.text('Y Axis Label')
height
在这种情况下是图表(由SVG所占据的垂直区域)的高度。上面的代码会将<text>
元素渲染到图表的左下角,然后将文字相对于该左下角点居中。 width
确实不是改变,因此而不是被居中,它运行在svg的左下角。
我猜测,如果width
等于图表的height
,那么其中的文本将变为垂直居中。这似乎并不是这种情况 - 或者 - 我需要在SVG中设置一些神奇的display:block
type属性,以使width
能够在<text>
元素上工作。
应该怎么做?
基础上的反应,我去一个JavaScript路线和修改上面的线是(身高/ 2)...
.attr('transform', 'translate(-' + yAxisSpacing + ',' + height/2 + ') rotate(-90)')
换句话说,我必须手动设置变换x,y以垂直居中使用javascript。我希望能够摆脱一种纯粹的CSS解决方案,它可以与页面大小一样流畅。 –