Al trabajar con D3, quiero tener una etiqueta de eje Y que se gire -90º y se centre en el eje Y. Pensé que esto sería un pedazo de la torta, y escribió el siguiente:Cómo centrar texto girado a 90º en SVG
// 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
en este caso es la altura de la carta (el área vertical ocupado por SVG). El código anterior representará un elemento <text>
en la esquina inferior izquierda del gráfico, luego centre el texto relativo al punto inferior izquierdo. El width
no cambia y, por lo tanto, en lugar de estar centrado se ejecuta en la esquina inferior izquierda de la svg.
Había adivinado que si el width
era igual al height
del gráfico, el texto dentro de él se centraría verticalmente. Ese no parece ser el caso -O- existe alguna propiedad de tipo mágico display:block
que necesito establecer en SVG para que width
funcione en el elemento <text>
.
¿Cómo se debe hacer esto?
Sobre la base de las respuestas, fui con una ruta javascript y modificar la línea anterior a ser (altura/2) ...
.attr('transform', 'translate(-' + yAxisSpacing + ',' + height/2 + ') rotate(-90)')
En otras palabras, tengo que configurar manualmente la transformación x, y para centrar verticalmente con javascript. Esperaba conseguir una solución pura de CSS que podría ser fluida con el tamaño de página. –