Praca z D3, chcę mieć etykietę osi Y, która jest obrócona o 90º i wyśrodkowana na osi Y. Myślałem, że to będzie bułka z masłem, i napisał, co następuje:Jak wyśrodkować tekst obrócony o 90º w 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
w tym przypadku jest wysokość wykresu (obszar pionowej zajmowanej przez SVG). Powyższy kod spowoduje wyświetlenie elementu <text>
na dole po lewej stronie wykresu, a następnie wyśrodkuj tekst względem lewego dolnego punktu. Zmienia się więc , a nie w środku, lecz spływa z dolnego lewego rogu ekranu SVG.
Zgadłem, że jeśli width
był równy height
wykresu, tekst w nim znajdowałby się w pionie. To nie wydaje się być -OR- istnieje pewna magiczna właściwość typu, którą muszę ustawić w SVG, aby width
działał na elemencie <text>
.
Jak należy to zrobić?
Bazując na odpowiedziach, poszedłem z javascript trasie i modyfikowane powyższą linię być (wysokość/2) ...
.attr('transform', 'translate(-' + yAxisSpacing + ',' + height/2 + ') rotate(-90)')
Innymi słowy, muszę ręcznie ustawić transformację x, y, aby wyśrodkować w pionie za pomocą javascript. Miałem nadzieję, że uda mi się uciec czystym rozwiązaniem CSS, które może być płynne w rozmiarze strony. –