Я разрабатываю визуализацию данных, используя график, направленный по силе, и диаграмму p ie в D3. js. У меня есть вариант использования, когда мне нужно отобразить p ie -chart на конкретном узле типа c. Мне это удалось. ниже приведен его код.
var color = d3.scale.category10();
var radius = 35
var pie = d3.layout.pie()
.sort(null)
.value(function(d) { return d.value});
var arc = d3.svg.arc()
.outerRadius(radius)
.innerRadius(20);
var grouparcs = g.selectAll("arc")
.data()
.enter()
.append("g")
.attr("class", "arc")
grouparcs.append("text")
text.attr("transform", function (d) {
return "translate(" + d.x + "," + d.y + ")";
})
.attr("dy", ".50em")
.style("text-anchor", "middle")
.text(function(d) {
return d.data.id
});
var piechart = node.selectAll("path")
.data(function(d, i) { return pie(d.proportions)})
.enter()
.append("svg:path")
.attr("d", arc)
.attr("fill", color)
.style('visibility', "hidden")
Теперь мне нужно отобразить метки на круговой диаграмме, для которой я написал следующий фрагмент кода в приведенном выше js
var grouparcs = g.selectAll("arc")
.data(pie())
.enter()
.append("g")
.attr("class", "arc")
grouparcs.append("text")
text.attr("transform", function (d) {
return "translate(" + d.x + "," + d.y + ")";
})
.attr("dy", ".50em")
.style("text-anchor", "middle")
.text(function(d) {
return d.data.id
});
но когда я запускаю это, я получаю следующую ошибку:
Uncaught TypeError: Cannot read property 'length' of undefined at .data(pie()) line
Как получить текстовые метки на ar c в диаграмме p ie на узлах силового ориентированного графа.
ниже - часть моего узла json
{
size: 100,
id: "drug1",
name: "drug1",
type: "circle",
category: "DRUG_node",
proportions: [
{
group: 1,
value: 1,
category: "DRUG_node",
id: "drug1"
},
{
group: 2,
value: 1,
category: "DRUG_node",
id: "drug1"
},
{
group: 3,
value: 1,
category: "DRUG_node",
id: "drug1"
}
]
}