LIVE DEMOd3 przejście z baru do tortu iz powrotem
Więc mam to przekonanie, że wszystkie pojedyncze dane osi powinno być dozwolone wyświetlane we wszystkich podstawowych formach; a przynajmniej od tortu do baru. Idealnie byłoby to animowane przejście, ale to była trudność.
Uzyskanie wykresu kołowego do pracy jest łatwe, tak jak uzyskanie wykresu słupkowego. Oto co mam do tej pory:
# fields
width = 750
height = width/2
margin = 20
radius = (height-(margin*2))/2
# helpers
pie = d3.layout.pie().value (d) -> d
arc = d3.svg.arc()
.outerRadius(radius)
.innerRadius(radius/4)
x = d3.scale.linear().domain([0, 100]).range [0, width]
$http.get('/Classification_Top_10_by_Count.json').success (data) ->
percents = (parseFloat item.Percent for item in data).sort d3.ascending
svg = d3.select('#svgStage').append('svg')
.attr('width', width+(margin*2))
.attr('height', height+(margin*2))
svg.data([percents])
g = svg.append('g')
.attr('transform', "translate(#{radius},#{radius})")
paths = g.selectAll 'path'
paths.data(pie).enter().append('path')
.attr('d', arc)
toBars = ->
g.selectAll('path').transition().duration(2000)
.attr 'd', (d, index) ->
# this is over complex because I was playing with it.
cord =
tl : [0, index*20]
tr : [d.value*20, index*20]
br : [d.value*20, index*20-20]
bl : [0, index*20-20]
oCord = [
cord.tl
cord.tr
cord.br
cord.bl
]
"M #{oCord[0][0]}, #{oCord[0][2]}
A 0, 0 0 0, 0 #{oCord[1][0]}, #{oCord[1][3]}
L #{oCord[2][0]}, #{oCord[2][4]}
A 0, 0 0 0, 0 #{oCord[3][0]}, #{oCord[3][5]}
Z"
Oczywiście to zadziałało jego elementu musi być ścieżka do elementu ścieżki, a przejście pracuje teraz. Problem polega na tym, że wygląda na bzdura. W momencie, gdy się zaczyna, wygląda na zniekształconą, aż do końca i staje się przyzwoitym wykresem słupkowym.
Patrzyłem na to: http://d3-example.herokuapp.com/examples/showreel/showreel.html Co pokazuje pasek przechodzący do pączka w sposób, w jaki chciałbym. Patrząc na kod źródłowy, odbywa się to za pomocą niestandardowej animacji. (zobacz wiersz źródłowy 518)
Teraz jestem w mojej głowie. Co tu się dzieje? Jak mogę uruchomić to przejście? Czy ktoś inny radził sobie z tym problemem?
UPDATE
Wystarczy być jasne, poniżej ilustracjami intencją mojego abit przejściowym jaśniej.
Bounty klarowność. Dodałem nagrodę do tego pytania, ponieważ potrzebuję wyjaśnienia, co się stało. Superboggly to zrobił, więc dostał nagrodę. Jednak podejście Amit Aviv jest lepsze, więc akceptuję jego odpowiedź jako najbardziej poprawną. Mam również +1.
widzę tylko do linii 660 w HTML ... mam szukać w innym pliku zamiast? –
masz rację. Jego 518, – Fresheyeball
Oprócz wszelkich problemów technicznych, jak byś animował od klina do paska? Doughnut to bar jest łatwy, ponieważ pączki "kliny" to tak naprawdę tylko zakrzywione paski, więc wszystko, co musisz zrobić, to je wyprostować. Klin w naturalny sposób nie nadaje się do takiej transformacji. Jeśli dodasz środkowy krok -> pączek -> pasek, który pomoże Ci osiągnąć pożądany efekt? –