Pregunta

Me esfuerzo para conseguir algunas cartas funcionales con dojo ...

Quiero crear un gráfico de áreas apiladas con 3 líneas. Para los "Bajo", "moy" y "Alto", como se ve en los datos JSON.

    var jStore = {"identifier":"mois",
                "items":[{"mois":1,  "bas":98,   "moy":122.5,   "haut":147},
                         {"mois":2,  "bas":91,   "moy":113.75,  "haut":136.5},
                         {"mois":3,  "bas":91,   "moy":113.75,  "haut":136.5},
                         {"mois":4,  "bas":84,   "moy":105,     "haut":126},
                         {"mois":5,  "bas":77,   "moy":96.25,   "haut":115.5},
                         {"mois":6,  "bas":63,   "moy":78.75,   "haut":94.5},
                         {"mois":7,  "bas":49,   "moy":61.25,   "haut":73.5},
                         {"mois":8,  "bas":42,   "moy":52.5,    "haut":63},
                         {"mois":9,  "bas":49,   "moy":61.25,   "haut":73.5},
                         {"mois":10, "bas":70,   "moy":87.5,    "haut":105},
                         {"mois":11, "bas":77,   "moy":96.25,   "haut":115.5},
                         {"mois":12, "bas":84,   "moy":105,     "haut":126}]
             };

Quiero poner int del eje x los meses, ya que se ve en el código. Llamar a los datos específicos en el JSON para crear cada línea.

dojo.addOnLoad(function() {
                var chart1 = new dojox.charting.Chart2D('chart1');
                chart1.addPlot('default', {
                        type: 'StackedAreas',
                        markers: true,
                        tension: 'S',
                        lines: true,
                        areas: true,
                        labelOffset: -30,
                        shadows: {
                            dx:2, dy:2, dw:2
                        }
                     });
                chart1.addAxis('x', {max:12, 
                   labels:[
                      {value: 0, text: ""},
                      {value: 1, text: "Jan"},
                      {value: 2, text: "Feb"},
                      {value: 3, text: "Mar"},
                      {value: 4, text: "Apr"},
                      {value: 5, text: "May"},
                      {value: 6, text: "Jun"},
                      {value: 7, text: "Jul"},
                      {value: 8, text: "Aug"},
                      {value: 9, text: "Sept"},
                      {value: 10, text: "Oct"},
                      {value: 11, text: "Nov"},
                      {value: 12, text: "Dec"}
               ]});
                chart1.addAxis('y', { vertical: true, max:200, includeZero: true });
                chart1.addSeries('Basse', (jStore, {query: {bas: "*"}}, "bas"),{ stroke: 'red', fill: 'pink' });
                chart1.addSeries('Moyenne',(jStore, {query: {moy: "*"}}, "moy"), { stroke: 'green', fill: 'lightgreen' });
                chart1.addSeries('Haute',(jStore, {query: {haut: "*"}}, "haut"), { stroke: 'blue', fill: 'lightblue' });
                chart1.render();
                var anim1a = new dojox.charting.action2d.Magnify(chart1, "default");
                var anim1b = new dojox.charting.action2d.Tooltip(chart1, "default");
                var legend1 = new dojox.charting.widget.Legend({
                    chart:chart1
                },"legend1");
                chart1.render();
            });

No funciona, no sé Wath tengo que poner en lugar de llamar a mis (jStore, {query: {haut: "*"}}, "haut") datos específicos.

ayuda por favor! Gracias mucho.

¿Fue útil?

Solución

A partir de los documentos oficiales Usando dojo.data Fuentes de datos con gráficos :

  

dojox.charting.DataSeries se utiliza para conectar a las tiendas dojo.data. El usuario debe crear y pasarlo en lugar de una matriz de datos en chart.addSeries () llamada.

Ejemplo de uso se puede encontrar en dojox/charting/tests/test_DataSeries.html.

Otra pieza que falta en su ejemplo es un objeto de almacén. De alguna manera se intenta pasar de una estructura JSON alrededor, que tiene los datos, pero no se requiere métodos. Debe crear un almacén de datos en primer lugar de sus datos. No tengo idea de lo que almacenan datos que desea utilizar, pero si lo que quieres es mostrar la estructura de datos, puede utilizar dojo.data.ItemFileReadStore:

dojo.require("dojo.data.ItemFileReadStore");

var jStore = ...; // not really a store, but your JSON-like object
var realStore = new dojo.data.ItemFileReadStore({data: jStore});
...
chart1.addSeries(
  'Basse',
  new dojox.charting.DataSeries(realStore, {query: {bas: "*"}}, "bas"),
  {stroke: 'red', fill: 'pink'}
);

Uso enlace anterior para aprender sobre dojox.charting.DataSeries. Lea todo sobre dojo.data en la documentación oficial: http://docs.dojocampus.org/dojo/data

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top