Да.Пример того, как это сделать, можно найти на демонстрационной странице Raphael, где вы получили круговую диаграмму.См. Демонстрационную версию Growing Pie .
. Вы должны отделить код, в котором вы генерируете путь, в отдельную функцию, чтобы вы могли использовать его позже для возврата новых путей.Чтобы использовать animate (), вам нужно определить функцию для customAttributes
объекта ;он должен возвращать (по крайней мере) объект со свойством path
, установленным на новый путь вашего среза.
Поскольку у вас есть метки, вы, вероятно, захотите изменить код так, чтобы куски пирога расширялись / сжималисьотносительно их центра, так что вам также не нужно перемещать надписи, поскольку надписи центрированы по "оси" их среза.
Обновление
Вот пример JSFiddle с простым примером, почти таким же, как у демонстрации Дмитрия Растущего Пирога, за исключением того, что больше похоже на ваш график.Я экспортирую setValue()
метод для изменения размеров среза и вызываю его при загрузке страницы.См. его сообщение в блоге о добавлении customAttributes, также.
В моем последнем абзаце выше я был немного не в себе.На вашем графике не было ярлыков;Я их перепутал.Кроме того, было бы сложнее держать кусочки по центру, поэтому я не стал этого делать.Функция animate()
устанавливает для каждого сегмента новые начальные и конечные точки на круге, а Рафаэль вычисляет промежуточные точки.Как видите, вы можете передать несколько аргументов в массиве.
this.customAttributes.slice = function(a0, a1) { /*...*/ }
// ...
chart.push(paper.path().attr({slice:[0, Math.PI/2 ]})