Je fais un graphique Diagramme à bulles avec D3.js et je voudrais le transformer en utilisant AngularJS mais je suis perdu ... Je lis this tutorial mais tout est apparu.D3.js Graphique graphique à bulles n'apparaît pas avec AngularJS
Ce code je fais:
var d3DemoApp = angular.module('d3DemoApp', []);
// controller business logic
d3DemoApp.controller('AppCtrl', function AppCtrl ($scope) {
$scope.data = './data.json';
$scope.getCommitData = function() {
$http({
method: 'GET',
url: $scope.data
}).
success(function (data) {
// attach this data to the scope
$scope.data = data;
// clear the error messages
$scope.error = '';
}).
error(function (data, status) {
$scope.error = 'Error: ' + status;
});
};
// get the commit data immediately
$scope.getCommitData();
});
d3DemoApp.directive('ghVisualization', function() {
return {
restrict: 'E',
scope: {
val: '=',
grouped: '='
},
link: function (scope, element, attrs) {
var diameter = 900,
format = d3.format(",d"),
color = d3.scale.category20c();
var bubble = d3.layout.pack()
.sort(null)
.parameter3([diameter, diameter])
.value(function(d) { return (d.parameter1+1); })
.padding(1.5);
var svg = d3.select("body").append("svg")
.attr("width", diameter)
.attr("height", diameter)
.attr("class", "bubble");
scope.data = getCommitData();
var node = svg.selectAll(".node")
.data(bubble.nodes(classes($scope.data))
.filter(function (d) {
return !d.children;
}))
.enter().append("g")
.attr("class", "node")
.attr("transform", function (d) {
return "translate(" + d.x + "," + d.y + ")";
});
node.append("title")
.text(function (d) {
return d.className + ": " + format(d.value);
});
node.append("circle")
.attr("r", function (d) {
return d.r;
})
.style("opacity", "0")
.style("fill", function (d) {
return "red";
});
node.append("text")
.attr("dy", ".3em")
.style("text-anchor", "middle")
.text(function (d) {
return d.className.substring(0, d.r/3);
})
.style("opacity", "0");
node.on("click", click);
function click(d) {
alert("There is a click");
document.getElementById('myDiv').value = d.parameter2;
};
// Returns a flattened hierarchy containing all leaf nodes under the root.
function classes(root) {
var classes = [];
function recurse(name, node) {
if (node.children) node.children.forEach(function(child) { recurse(node.name, child); });
else classes.push({parameter2: name, className: node.name, value: node.parameter3, parameter3: node.parameter3});
}
recurse(null, root);
return {children: classes};
}
d3.select(self.frameElement).style("height", diameter + "px");
}
}
});
J'espère que vous pouvez me aider parce que je suis très perdu ... Merci beaucoup!
Merci beaucoup pour votre réponse, effectivelly il fonctionne sur Plunker mais s'il vous plaît, essayez de créer les mêmes fichiers en local et vous aurez une erreur: d3.v3.min.js: 1Error: attribut transformer: Nombre attendu, "translate (NaN, NaN)". d3.v3.min.js: 1Error: attribut r: longueur attendue, "NaN". –
Anonyme
@ afeffifari-1957 Le même problème est survenu car vos données n'ont pas la propriété 'taille' définie – Sajeetharan