【发布时间】:2012-09-13 00:50:19
【问题描述】:
使用 D3,我想要一个 Y 轴标签,它旋转 -90º 并以 Y 轴为中心。我认为这将是小菜一碟,并写了以下内容:
// 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 类型属性,以便 width 处理 <text> 元素。
这应该怎么做?
根据回复,我使用 javascript 路由并将上面的行修改为 (height/2)...
.attr('transform', 'translate(-' + yAxisSpacing + ',' + height / 2 + ') rotate(-90)')
【问题讨论】: