Проводка как вопрос & ответить здесь, чтобы спасти кого-то еще те же проблемы позже ...Sunburst данных разделов перезаписаны второй Sunburst на той же странице
Когда я создаю два Sunburst диаграммы с использованием d3.layout.partition, ломтика пропорции первого SunBurst в заменяются пропорциями среза второй солнечной вспышки при изменении размеров срезов.
Эти две диаграммы передают различные функции доступа в макет раздела, например.
d3.layout.partition()
.sort(null)
.value(function(d) { return 1; });
против
d3.layout.partition()
.sort(null)
.value(function(d) { return d.size; });
И они создают свой собственный список узлов, которые не распределяются между двумя завиток. Однако, если я перезвоню генератору d3.svg.arc
, чтобы изменить его размер до большего радиуса (но не изменить общие пропорции), углы среза будут внезапно перезаписаны.
Смотрите пример здесь: http://bl.ocks.org/explunit/ab8cf15534f7fec5ac6d
Да, это еще одно допустимое обходное решение.Ни обходное решение не должно быть необходимым, ИМО, но я думаю, что авторам D3 не понравилось обертывание исходных данных. – explunit
Попробуйте представить, что произойдет, если ваши данные будут постоянно обновляться. Копирование всего набора данных для каждой диаграммы имеет смысл, если вы знаете, что данные никогда не будут меняться, но это не похоже, что это должно быть поведение по умолчанию. Там должен быть способ сохранить эти копии данных в синхронизации друг с другом. Что, если вы делаете 20 карт? Должно ли d3 сделать 20 копий данных и попытаться синхронизировать изменения во всех 20 из них? Для меня имеет смысл просто перекомпилировать раздел, поскольку это все, что отличается между графиками. – jshanley
Но это несовместимо с тем, как работают другие части D3, например. Пировая компоновка обертывает исходные данные в свойство '.data'. – explunit