x 轴标签在 svg 图中被覆盖
x-axis label overwritten in svg graph
我正在处理堆叠条形图。这是codepenhttps://codepen.io/a166617/pen/NWvZGLd
正如您在 codepen 中看到的那样,x 轴标签相互重叠,我试图使其成一定角度,这样它们就不会相互重叠。例如下面这张截图
我尝试添加 transform: rotateX(90deg)
作为样式,但它没有正确显示。这是我在上面添加 css
的代码行
<text
x={125 + rowIndex * 60}
y={520}
textAnchor="middle"
style={{ fill: 'red',
fontSize: '13px',
transform: `rotateX(90deg)`
}}
>{entry.name}</text>
谁能告诉我如何做到这一点,以便清楚地查看 x 轴标签。
旋转变换将围绕当前原点旋转。对于 SVG,默认为 SVG 的原点。即 0,0。因为您的文本离 (0, 0) 很远,所以您的变换会将文本旋转到您想要的位置。
为避免这种情况,您需要在旋转之前更改 transform-origin
。像这样:
<text
x={125 + rowIndex * 60}
y={520}
textAnchor="end"
style={{ fill: 'red',
fontSize: '13px',
transformOrigin: (125 + rowIndex * 60)+'px 520px',
transform: 'rotateZ(-45deg)'
}}
>{entry.name}</text>
我在对您上一个问题的更新回答中采用了稍微不同的方式。我使用了只有 SVG transform
属性接受的特殊版本的旋转 (rotate(angle,cx,cy)
)。它包括一个 X,Y 旋转中心。对于 CSS,您必须使用 transform-origin
。
我正在处理堆叠条形图。这是codepenhttps://codepen.io/a166617/pen/NWvZGLd
正如您在 codepen 中看到的那样,x 轴标签相互重叠,我试图使其成一定角度,这样它们就不会相互重叠。例如下面这张截图
我尝试添加 transform: rotateX(90deg)
作为样式,但它没有正确显示。这是我在上面添加 css
<text
x={125 + rowIndex * 60}
y={520}
textAnchor="middle"
style={{ fill: 'red',
fontSize: '13px',
transform: `rotateX(90deg)`
}}
>{entry.name}</text>
谁能告诉我如何做到这一点,以便清楚地查看 x 轴标签。
旋转变换将围绕当前原点旋转。对于 SVG,默认为 SVG 的原点。即 0,0。因为您的文本离 (0, 0) 很远,所以您的变换会将文本旋转到您想要的位置。
为避免这种情况,您需要在旋转之前更改 transform-origin
。像这样:
<text
x={125 + rowIndex * 60}
y={520}
textAnchor="end"
style={{ fill: 'red',
fontSize: '13px',
transformOrigin: (125 + rowIndex * 60)+'px 520px',
transform: 'rotateZ(-45deg)'
}}
>{entry.name}</text>
我在对您上一个问题的更新回答中采用了稍微不同的方式。我使用了只有 SVG transform
属性接受的特殊版本的旋转 (rotate(angle,cx,cy)
)。它包括一个 X,Y 旋转中心。对于 CSS,您必须使用 transform-origin
。