Czytam informacje o łuku z pliku json i wizualizuję je za pomocą d3. Aktualnie używam d3.layout
do grupowania danych. więc muszę przeczytać ten plik, gdzie tag
jest naszym svg
tagiem, który jest path
i value
jest wartością ścieżki d
, Problemem jest wartość d zostanie zmieniona po przeczytaniu i zwrocie 0
. Jak mogę przeczytać value
? Czy powinienem inaczej organizować plik json? Oto mój kod:Nie można odczytać wartości ścieżki d z pliku json d3?
plik json:
{"id": "svgContent","children": [
{"id": "circle1","tag": "path",
"value": "M0,160A160,160 0 1,1 0,-160A160,160 0 1,1 0,160M0,100A100,100 0 1,0 0,-100A100,100 0 1,0 0,100Z",
"children": [
{ "id": "point", "cx": "-67.59530401363443", "cy": "-93.03695435311894" },
{ "id": "point", "cx": "-109.37149937394265", "cy": "35.53695435311897" },
{ "id": "point", "cx": "1.4083438190194563e-14", "cy": "115" }
]
},
{"id": "circle2","tag": "path","value": "M0,260A260,260 0 1,1 0,-260A260,260 0 1,1 0,260M0,200A200,200 0 1,0 0,-200A200,200 0 1,0 0,200Z",
"children": [
{ "id": "point", "cx": "-126.37382924288177", "cy": "-173.93865379061367" },
{ "id": "point", "cx": "-204.477151003458", "cy": "66.43865379061373" },
{ "id": "point", "cx": "2.6329906181668095e-14", "cy": "215" }
]
}
]}
To jest mój kod źródłowy:
var w = 1200, h = 780;
var svgContainer = d3.select("#body").append("svg")
.attr("width", w).attr("height", h).attr("id", "svgContent");
var pack = d3.layout.partition();
d3.json("/data.json", function(error, root) {
if (error) return console.error(error);
var nodes = pack.nodes(root);
svgContainer.selectAll("pack").data(nodes).enter().append("svg")
.attr("id", function (d) { return d.id; }).append("path")
.attr("d", function (d) {
console.log(d.value);
return d.value; })
.attr("transform", "translate(600,0)");
});
Po sprawdzeniu konsolę spodziewałem "M0,260A260,260 0 1,1 0,-260A260,260 0 1,1 0,260M0,200A200,200 0 1,0 0,-200A200,200 0 1,0 0,200Z"
ale powrót 0
Jak mogę zajmij się tym?
Twoje dane są zagnieżdżone ... Sugeruję utworzenie JSFiddle, abyśmy mogli manipulować twoim kodem. – Colin
Z twojego kodu trudno jest odgadnąć, co chcesz zrobić. Przede wszystkim 'pathPack' jest niezdefiniowany. Może miałeś na myśli 'paczkę'? Jeśli chcesz użyć 'd3.layout.partition', prawdopodobnie chcesz utworzyć diagram sunburst? Wtedy nie musisz zapisywać danych ścieżki w jsonie. Wystarczy umieścić wartości w jsonie i skrzynkę ścieżki, używając 'd3.svg.arc()'. [Tutaj] (https://github.com/mbostock/d3/wiki/Partition-Layout#children) to przykład dla jsona, którego możesz użyć. – jhinzmann
Dziękuję za komentarz, ale nie mam żadnej wartości ani innych rzeczy do stworzenia łuku, po prostu mam plik "json" i muszę to przeczytać. Był zły kod, który edytowałem. – Gabriel