时间序列数据是分析随时间变化的指标的关键。D3.js 提供了强大的工具来创建动态、交互式的图表。以下是实现步骤:

  1. 准备数据
    确保数据格式为时间戳与数值对,例如:

    const data = [
      { date: "2023-01-01", value: 120 },
      { date: "2023-01-02", value: 145 },
      // 更多数据点...
    ];
    
    d3js_time_series
  2. 转换时间格式
    使用 d3.timeParse 将字符串转换为时间对象:

    const parseTime = d3.timeParse("%Y-%m-%d");
    data.forEach(d => d.date = parseTime(d.date));
    
  3. 创建时间轴
    d3.scaleTime() 定义时间范围,结合 marginsvg 元素布局:

    const xScale = d3.scaleTime()
      .domain(d3.extent(data, d => d.date))
      .range([0, width - margin.left - margin.right]);
    
  4. 绘制折线图
    通过 d3.line() 生成路径数据,用 path 元素渲染:

    const line = d3.line()
      .x(d => xScale(d.date))
      .y(d => yScale(d.value));
    svg.append("path").datum(data).attr("d", line);
    
  5. 添加交互功能
    mouseovermouseout 实现数据点悬停效果:

    svg.selectAll("circle")
      .data(data)
      .enter()
      .append("circle")
      .attr("r", 5)
      .on("mouseover", (event, d) => tooltip.show(d));
    

扩展阅读

data_flow
*图示:数据从原始状态到可视化呈现的流程*