当前位置:首页 > JavaScript

d3.js 实现

2026-03-01 07:11:26JavaScript

d3.js 实现基础图表

使用d3.js创建基础图表需要引入库文件并遵循数据绑定、DOM操作和绘制的流程。以下以柱状图为例说明核心步骤:

<!DOCTYPE html>
<html>
<head>
  <script src="https://d3js.org/d3.v7.min.js"></script>
</head>
<body>
  <svg width="400" height="300"></svg>
  <script>
    const data = [10, 20, 30, 40, 50];
    const svg = d3.select("svg");

    svg.selectAll("rect")
      .data(data)
      .enter()
      .append("rect")
      .attr("x", (d, i) => i * 60)
      .attr("y", d => 300 - d * 5)
      .attr("width", 50)
      .attr("height", d => d * 5)
      .attr("fill", "steelblue");
  </script>
</body>
</html>

数据绑定与比例尺

d3.js通过比例尺将数据值映射到可视化空间。线性比例尺和序数比例尺是常见类型:

const xScale = d3.scaleLinear()
  .domain([0, d3.max(data)])
  .range([0, 400]);

const colorScale = d3.scaleOrdinal()
  .domain(data)
  .range(d3.schemeCategory10);

添加坐标轴

坐标轴组件需要结合比例尺使用:

const axisBottom = d3.axisBottom(xScale);
svg.append("g")
  .attr("transform", "translate(0, 250)")
  .call(axisBottom);

过渡动画效果

d3.js提供transition()方法实现平滑动画:

svg.selectAll("rect")
  .transition()
  .duration(1000)
  .attr("y", d => 300 - d * 3)
  .attr("height", d => d * 3);

事件交互处理

通过事件监听器实现交互:

svg.selectAll("rect")
  .on("mouseover", function() {
    d3.select(this).attr("fill", "orange");
  })
  .on("mouseout", function() {
    d3.select(this).attr("fill", "steelblue");
  });

复杂图表实现

对于力导向图等复杂可视化,需使用特定布局:

const simulation = d3.forceSimulation(nodes)
  .force("charge", d3.forceManyBody())
  .force("link", d3.forceLink(links))
  .force("center", d3.forceCenter(200, 200));

响应式设计

通过窗口监听实现响应式调整:

d3.js 实现

function resize() {
  const width = window.innerWidth * 0.8;
  svg.attr("width", width);
  xScale.range([0, width]);
  svg.selectAll("rect").attr("x", (d, i) => i * (width/data.length));
}
window.addEventListener("resize", resize);

标签: js
分享给朋友:

相关文章

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

js实现 拖动

js实现 拖动

实现拖动的步骤 HTML 结构 创建一个可拖动的元素和一个放置区域: <div id="draggable" draggable="true">拖动我</div> <d…

js实现原理

js实现原理

JavaScript 实现原理 JavaScript 是一种解释型语言,其实现原理涉及多个核心组件和运行机制,包括引擎、运行时环境、事件循环等。 引擎与解释执行 现代 JavaScript 引擎(如…

js实现弹框

js实现弹框

使用 alert 实现简单弹框 JavaScript 的 alert 方法可以直接显示一个简单的弹框,内容为纯文本: alert("这是一个简单的弹框"); 使用 confirm 实现确认弹框…

js实现左右滑动

js实现左右滑动

实现左右滑动的 JavaScript 方法 监听触摸事件 通过 touchstart、touchmove 和 touchend 事件来检测用户的手势操作。记录触摸的起始位置和移动距离,判断滑动方向。…