J'essaie d'obtenir un graphique à bulles fonctionnant avec crossfilter et dc.js. Mais j'ai un problème pour faire apparaître mes points sur mon tableau. Je l'ai construit un jsFiddle ici:dc.js graphique à bulles ne parvient pas à afficher les points
var data = [
{date: "12/27/2012", label: "a1", x: 2, y: 190, bubble: 5},
{date: "12/28/2012", label: "a2", x: 2, y: 10, bubble: 5},
{date: "12/29/2012", label: "a3", x: 95, y: 300, bubble: 10}
];
var ndx = crossfilter(data);
var parseDate = d3.time.format("%m/%d/%Y").parse;
data.forEach(function(d) {
d.date = parseDate(d.date);
});
var dateDim = ndx.dimension(function(d) {return d.date;});
var xDim = ndx.dimension(function(d) {return d.x;});
var bubbleChart = dc.bubbleChart("#bubble-chart");
bubbleChart
.dimension(dateDim)
.group(xDim)
.x(d3.scale.linear().domain([0, 100]))
.y(d3.scale.linear().domain([0, 100]))
.width(400)
.height(400)
.yAxisPadding(50)
.xAxisPadding(50)
.xAxisLabel('X') // (optional) render an axis label below the x axis
.yAxisLabel('Y') // (optional) render a vertical axis lable left of the y axis
.label(function (p) {
return p.label;
})
.renderLabel(true)
.title(function (p) {
return [
"x: " + p.x,
"y: " + p.y,
"Bubble: " + p.bubble,
]
.join("\n");
})
.renderTitle(true)
.renderHorizontalGridLines(true) // (optional) render horizontal grid lines, :default=false
.renderVerticalGridLines(true)
.maxBubbleRelativeSize(0.3)
.keyAccessor(function (p) {
return p.y;
})
.valueAccessor(function (p) {
return p.x;
})
.radiusValueAccessor(function (p) {
return p.bubble;
})
;
pouvez afficher les données via la table de données en bas, donc je sais que les données sont visibles. Ma meilleure idée à ce stade est que je ne suis pas en train de mettre en œuvre mes groupes ou mes dimensions correctement, mais rien que je semble essayer de travailler pour moi.
Quelqu'un peut-il voir ce que je fais mal ici? Je cherche les points à afficher comme data.x, data.y avec une taille de bulle de data.bubble.
EDIT: mise à jour de la question pour inclure plus de configuration JS. (Tout le code est sur mon violon)
Je suis désolé, mais simplement demander aux autres de déboguer votre code ne fait pas une grande question SO. En particulier, vous voudrez 1. Regardez la console de débogage pour toutes les erreurs 2. https://github.com/dc-js/dc.js/wiki/FAQ#tell-whether-my-groups-are- function-correctement - if-my-input-data-is-good 3. Le débogueur dans votre navigateur est votre ami. – Gordon
Je n'essaie pas de vous faire déboguer mon code. Comme je l'ai dit, je pense avoir compris où était mon problème (groupes/dimensions). Ce n'est pas vraiment mon "code" autant qu'un violon pour essayer de reproduire le problème. J'ai grandement simplifié le code pour essayer de le rendre plus facile. Il n'y a pas d'erreurs de console. Je pense qu'il est clair que j'ai des problèmes avec le regroupement, car c'est la partie du code que je comprends le moins. – awildeep
Wow, on dirait que vous avez trouvé un cas étrange de dc.js. Il ne devrait pas être possible de transmettre une dimension en tant que groupe. Il arrive juste qu'ils aient tous les deux une fonction '.top', c'est pourquoi ils n'ont généré aucune erreur. Pouah. – Gordon