javascript - 使用 d3.js 仅显示 csv 文件中的 20 行数据

标签 javascript csv d3.js

<分区>

我想弄清楚的是创建一个脚本的方法,该脚本将从 CSV 文件中获取前 20 行数据,在加载包含 3000 多个条目的完整 CSV 文件后,只显示 20 个条形图中的时间。这样我就可以有两个按钮,每次可以让我在 20 行数据之间来回移动,而不是一次显示所有 3000 个条,这使得图表甚至不可读。

如果没有将 CSV 文件分成 20 个一组,并在每次单击“下一步”时加载下一个 CSV 文件,我什至不确定如何去做。

最佳答案

根据数据可视化的类型(例如条形图),3000 项肯定太多了。但是,它通常与文件大小无关。

话虽如此,与其将其分割成多个 20 行的文件,不如在单个 CSV 中一次加载所有项目,并且每次只显示 20 个(这就是您的问题所在标题说)。

要剪切数据数组,请使用 slice :

var slicedData = data.slice(begin, end);

这是一个基本的演示:

var body = d3.select("body");
body.append("p").html("ID -- VALUE<br>");
var index = 0

d3.csv("https://gist.githubusercontent.com/ffishman/a8cd485c44bee39b68c7a5c7fad14f17/raw/fad1cd9a10f313c06ec65bd8ab289c818536681c/flare.csv", function(data) {
  d3.select("#bt2").on("click", () => {
    var newData = data.slice(index, index + 20);
    index += 20;
    update(newData);
  })

  d3.select("#bt1").on("click", () => {
    index -= 20;
    var newData = data.slice(index - 20, index);
    update(newData)
  })

  function update(newData) {
    var par = body.selectAll(".par")
      .data(newData, d => d.id);

    par.exit().remove();

    par.enter()
      .append("p")
      .attr("class", "par")
      .merge(par)
      .html(d => d.id + " -- " + d.value)
  }
})
p {
    margin: 2px;
}
<script src="https://d3js.org/d3.v4.min.js"></script>
<button id="bt1">Previous 20</button>
<button id="bt2">Next 20</button>

关于javascript - 使用 d3.js 仅显示 csv 文件中的 20 行数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42679704/

相关文章:

javascript - 粘性导航栏在 jsfiddle 上工作,但在本地主机上不符合预期

c# - jQuery 浏览器差异

javascript - Mootools 1.3.2 & IE8 仅错误,对象不支持属性/方法

csv - 在 Python 中从 url 下载 csv.gz 文件

d3.js - D3Js.v5 : . ..selectAll(...).data(...).enter 不是函数

java - 在JavaScript中使用“<g:message标签

powershell - 在Powershell中从CSV导入数据提供的英国CSV日期少于7天

c# - 在 DataGridView 中读取 CSV 文件

javascript - 在圆之间绘制路径

javascript - D3 如何替换 SVG 元素