J'essaie de créer un projet Web dans lequel les détails sont au format JSON, par exemple:
{
"file_id": 333,
"t": "2016-03-08 12:00:56"
}
J'essayais de montrer la sortie dans l'histogramme d3 js. Le problème auquel je suis confronté est que le code que j'ai obtenu fonctionne pour un fichier JSON, mais pas pour un objet désérialisé à partir du JSON. Quelqu'un peut-il m'aider avec cela?
La partie du script de travail pour le fichier JSON est la suivante:
d3.json("FILENAME", function(error, data) {
data = JSON.parse(data);
x.domain(data.map(function(d) { return d.letter }));
y.domain([0, d3.max(data, function(d) { return d.frequency })]);
Si je change le nom de fichier en un objet, cela ne fonctionne pas.
étant une bibliothèque JS D3 fonctionne uniquement avec les objets JS (avec d'autres types de données JS), d3.json
est simplement une méthode pour charger l'objet à partir d'un fichier externe. Donc, si vous n’avez pas besoin de charger des données depuis un fichier externe, n’utilisez pas d3.json
//d3.json("FILENAME", function(error, data) {
//data = JSON.parse(data);
var data = {
"file_id": 333,
"t": "2016-03-08 12:00:56"
}; //your own object
x.domain(data.map(function(d) { return d.file_id}));
y.domain([0, d3.max(data, function(d) { return d.t})]);
j'espère que ça aide
Si je change le nom du fichier en objet, cela ne fonctionne pas.
Ensuite, vous devriez l'appeler dans une fonction et passer l'objet dans les paramètres:
var obj = {}; // the object to be be passed for chart
function updateGraph(o){ // get in the params here
var x = d3.scale.ordinal().rangeRoundBands([0, width]),
y = d3.scale.linear().range([height, 0]);
x.domain(o.letter);
y.domain([0, o.frequency]);
}
updateGraph(obj); // <----pass it here