Я сделал диаграмму d3. js p ie и связанную легенду с popu данных о населении. Когда я наводил курсор на сегменты p ie, я достигал увеличения связанных частей квадрата легенды и самого сегмента p ie ( больший externalRadius ). Сейчас я пытаюсь сделать наоборот. Когда я наводю курсор на квадрат легенды, я хочу увеличить сам квадрат и связанный с ним сегмент p ie. Примерно такой пример здесь https://www.amcharts.com/demos/pie-chart-with-legend/. Я напишу только часть кода, относящуюся к моей проблеме с диаграммой p ie.
var pie = d3.pie()
.value(function(d) {return d.pop})(popu);
var seg = d3.arc()
.innerRadius(100)
.outerRadius(150)
.padAngle(.1)
.padRadius(45);
var segover = d3.arc()
.innerRadius(100)
.outerRadius(170)
.padAngle(.1)
.padRadius(45);
Так что эта часть работает отлично.
svg.append("g")
.attr("class", "pieChart")
.attr("transform", "translate(1250,570)")
.selectAll("path")
.data(pie)
.append("path")
.attr("class", "pie")
.attr("id", function(d){return d.data.id})
.attr("d", seg)
.on("mouseenter", function(d){
d3.select(this)
.transition(10)
.duration(100)
.attr("d", segover)
})
Затем я попытался изменить p ie сегмент диаграммы при наведении на связанные с легендой сегменты.
var pieEl = svg.selectAll(".pie");
var piePath = pieEl.nodes();
svg.append("g")
.attr("class", "legend")
.attr("transform", "translate(-50,280)")
.selectAll(".mySquers")
.data(pie)
.enter()
.append("rect")
.attr("class", "rec")
.attr("x", 100)
.attr("y", function(d,i){ return 100 + i*25})
.attr("width", "15")
.attr("height", "15")
.attr("id", function(d,i){ return (popu[d,i].id)})
.style("fill",function(d,i){
if (this.id == piePath[i].id){
return piePath[i].getAttribute("fill")
}
})
.on("mouseenter", function(d){
for (var i=0; i<piePath.length; i++){
if (piePath[i].id == d.data.id){
piePath[i].setAttribute("d", segover);
}}
})
Когда я в лотке для установки атрибута ("d", segover) в DOM вместо атрибута d, записанного в виде строки, как обычно (d = " M144.58 ..... ") У меня есть функция (d =" function (p ie) {_e);} "и при наведении курсора p ie сегмент исчезает. Но, например, если я установлю атрибут fill на красный при наведении курсора, он изменится и сегмент будет закрашен. Так что обозначение кода это хорошо. Есть ли какое-то поведение пути d, созданного с помощью d3.ar c (), которое мне не хватает? Любое предложение приветствуется.