svg - 如何在 SVG 中居中 90º 旋转文本

标签 svg d3.js

使用 D3,我想要一个旋转 -90º 并以 Y 轴为中心的 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图表,然后其中的文本将成为垂直居中。情况似乎并非如此 - 或者 - 有一些魔法display:block为了 width,我需要在 SVG 中设置 type 属性在 <text> 上工作元素。

这应该怎么做?

根据响应,我使用了 javascript 路由并将上面的行修改为 (height/2) ...
.attr('transform', 'translate(-' + yAxisSpacing + ',' + height / 2 + ') rotate(-90)')

最佳答案

一个 width属性对 SVG 1.1 中的 没有影响。文本将围绕 x 定义的 x,y 位置居中(由于 text-anchor=middle)和 y属性(如果您不指定它们,它们默认为 0)。之后transform属性被应用。

关于svg - 如何在 SVG 中居中 90º 旋转文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12148380/

相关文章:

javascript - SVG 到 PNG 使用 javascript 保留 CSS

d3.js - D3 的秤无法正常工作

svg - SVG多边形中的逗号与空格

javascript - 使用 d3 获取对象的值

javascript - 如何利用 dc.js 和 d3.js 显示值堆积条形图?

javascript - 嵌套线图的 d3js 复制品

javascript - D3.js 水平折线图无法正确显示工具提示

javascript - 使用 D3.js 添加时平移 Canvas 以显示元素

javascript - 如何将 SVG 的背景颜色正确转换为 Canvas

javascript - 在 D3 中设计图例