【问题标题】:d3 js circular bar plot, how to pass a object instead of a .csv file?d3 js圆形条形图,如何传递对象而不是.csv文件?
【发布时间】:2019-05-09 13:04:34
【问题描述】:

如何更改此代码: https://www.d3-graph-gallery.com/graph/circular_barplot_basic.html

d3.csv("https://raw.gith.....

要让它从我的代码内部接受我的对象,而不是链接的 csv: 我的对象:

{0: 3
1: 7
2: 9
3: 2
.....
}

另外:我是否需要为我的对象添加一个带有列名的“标题”以使其被接受(从引用的 csv 文件中切换出 Country 和 Value)?

我已尝试根据此站点将其添加为 d3.json: https://github.com/d3/d3-fetch/blob/master/README.md#csv 但似乎所有方法都需要一个路径,以及当前范围内的我的数组(?),而不是路径中的文件。 (这叫作用域吧?)

【问题讨论】:

  • x 轴的域是什么?在该示例中,它是Country
  • 以 5 为间隔的度数。所以条形图 1 将是索引 0 到 4 中元素的总和。
  • 我明白了。无论如何我怀疑这对这个问题至关重要。你可能想看看我的回答。它可能解决了您使用对象显示图形的问题

标签: javascript arrays d3.js


【解决方案1】:

您需要将它从一个对象转换为一个对象数组。

假设这是您正在使用的对象:

const obj = {
  0: 30,
  1: 200,
  2: 900,
  3: 2000,
}

并且键与示例中给出的键相似,其中Country 将由 X 比例表示,Value 将由 Y 比例表示。

const obj = {
  0: 30,
  1: 200,
  2: 900,
  3: 2000,
}
const data = Object.entries(obj).map(element => {
  return {
    Country: element[0],
    Value: element[1]
  }
});
console.log(data)

这将为您提供用于 D3.js 圆形区域图的正确数据格式。

我已经通过here 复制了演示。点击“运行”,您可能需要向下滚动才能查看图表。

【讨论】:

  • 这似乎正是我想要解决的问题,我会努力实现。
  • 工作得很好。不知道为什么,但我一直在想我需要保留 d3.xxx( ... 函数。
  • @otk 你指的是d3.csv()吗?只有在导入 CSV 文件时才需要!
猜你喜欢
  • 1970-01-01
  • 2018-02-03
  • 1970-01-01
  • 2017-04-14
  • 1970-01-01
  • 2013-01-11
  • 1970-01-01
  • 2020-05-12
  • 1970-01-01
相关资源
最近更新 更多