D3.js 无法分析对象

D3.js 无法分析对象,d3.js,plottable,D3.js,Plottable,上面的代码正确地呈现了绘图,但当我使用以下代码时: var data = [{ x: 'A', y: 3 }, { x: 'B', y: 2 }, { x: 'C', y: 4 }, { x: 'D', y: 3 }]; var xScale = new Plottable.Scales.Category() var yScale = new Plottable.Scales.Linear() var xAxis = new Plottable.Axes.Ca

上面的代码正确地呈现了绘图,但当我使用以下代码时:

var data = [{
  x: 'A',
  y: 3
}, {
  x: 'B',
  y: 2
}, {
  x: 'C',
  y: 4
}, {
  x: 'D',
  y: 3
}];

var xScale = new Plottable.Scales.Category()
var yScale = new Plottable.Scales.Linear()

var xAxis = new Plottable.Axes.Category(xScale, "bottom");

var plot = new Plottable.Plots.Bar()
  .addDataset(new Plottable.Dataset(data))
  .x(function(d) {
    return d.x;
  }, xScale)
  .y(function(d) {
    return d.y;
  }, yScale)
  .animated(true)
  .renderTo("svg#example");

它不起作用。如何解析对象中的数据?是否可以在X中按类别的字母顺序显示条形图。例如,有时在从对象转换到数组时,数组按随机键顺序解压,有时使其第一个元素属于“B”键。

将对象转换为数组。首先,获取键,然后将它们与数组的值组合。如果仍不符合顺序,则可以对数组进行排序

var data2 = {
  'A': 2,
  'B': 3,
  'C': 4,
  'D': 5,
}

var plot = new Plottable.Plots.Bar()
  .addDataset(new Plottable.Dataset(data2))
  .x(function(d) {
    return d;
  }, xScale)
  .y(function(d) {
    return data2[d];
  }, yScale)
  .animated(true)
  .renderTo("svg#example");
演示:

var data2={'A':2,'B':3,'C':4,'D':5};
var data=Object.keys(data2.map)(函数(key){return[key,data2[key]];});

控制台日志(数据)我在你的答案中添加了一个片段演示,希望你不介意。有工作片段的答案总是更好!只需在下面提供的答案中添加信息即可:在D3中,
data()
函数接受3种内容:数组、函数或无。但它不接受对象。
var data = Object.keys(data2).map(function (key) { return [key, data2[key]]; });