使用AJAX数据绘制条形图

时间:2012-04-23 12:25:16

标签: jquery flot

我遇到了Flot图表和来自AJAX的数据的问题。基本上我创建了数组以显示图形但不知何故我看到轴标签但没有数据。另外,我如何进行堆叠或条形图?

编辑:或者任何人都可以告诉我如何使用带有x轴标签的AJAX在flot中显示数据。您可以在此处查看代码http://jsfiddle.net/DaG5W/284/。有谁请让我知道我在这里做错了什么?

这是我使用的代码。

$.getJSON(url, function(output) {
    var calendar, count, fieldNames, i, j, values, xAxis;
    fieldNames = new Array();
    i = 0;
    while (i < output.length) {
      if (fieldNames.indexOf(output[i].FieldName) < 0) {
        fieldNames.push(output[i].FieldName);
      }
      i++;
    }
    calendar = new Array();
    i = 0;
    while (i < output.length) {
      if (calendar.indexOf(output[i].Calendar) < 0) {
        calendar.push(output[i].Calendar);
      }
      i++;
    }
    xAxis = [];
    i = 0;
    while (i < calendar.length) {
      xAxis.push([parseInt(i + 1), calendar[i]]);
      i++;
    }
    data = [];
    i = 0;
    while (i < fieldNames.length) {
      values = [];
      count = 0;
      j = 0;
      while (j < output.length) {
        if (fieldNames[i] === output[j].FieldName) {
          count++;
          values.push([parseInt(count), parseInt(output[j].Totals)]);
        }
        j++;
      }
      data.push([
        {
          label: fieldNames[i].toString(),
          data: values,
          bars: {
            show: true
          },
          lines: {
            show: false
          }
        }
      ]);
    }
    return i++;
  });
  options = {
    xaxis: {
      ticks: xAxis
    }
  };
  plot = $.plot($("#div"), [data], options);

}

1 个答案:

答案 0 :(得分:5)

你非常接近一个有效的解决方案。你所做的一切都是在两个地方嵌套了太多的数组:

  data.push([
    {
      label: fieldNames[i].toString(),
      data: values,
      bars: {
        show: true
      },
      lines: {
        show: false
      }
    }
  ]);

系列对象周围不需要[]

plot = $.plot($("#div"), [data], options);

此处同样,[]周围不需要data。之后,它将图表。见这里:http://jsfiddle.net/ryleyb/DaG5W/291/