返回

用JS绘制酷炫的柱状图滑动效果

前端

绘制基本柱状图

要绘制基本柱状图,我们需要创建一个画布并使用JavaScript在画布上绘制矩形。矩形的高度应该与数据值成比例,矩形的宽度应该相等。我们可以使用以下代码来绘制基本柱状图:

// 创建画布
var canvas = document.createElement('canvas');
canvas.width = 500;
canvas.height = 300;

// 获取画布上下文
var ctx = canvas.getContext('2d');

// 设置矩形宽度
var barWidth = 50;

// 设置矩形之间的间距
var barSpacing = 10;

// 获取数据
var data = [10, 20, 30, 40, 50];

// 循环数据并绘制矩形
for (var i = 0; i < data.length; i++) {
  // 计算矩形的高度
  var barHeight = data[i] / 100 * 200;

  // 计算矩形的x坐标
  var x = i * (barWidth + barSpacing);

  // 计算矩形的y坐标
  var y = canvas.height - barHeight;

  // 绘制矩形
  ctx.fillRect(x, y, barWidth, barHeight);
}

添加动画和滚动效果

现在我们已经创建了基本柱状图,我们可以添加动画和滚动效果,使图表更加生动。我们可以使用以下代码来添加动画和滚动效果:

// 创建画布
var canvas = document.createElement('canvas');
canvas.width = 500;
canvas.height = 300;

// 获取画布上下文
var ctx = canvas.getContext('2d');

// 设置矩形宽度
var barWidth = 50;

// 设置矩形之间的间距
var barSpacing = 10;

// 获取数据
var data = [10, 20, 30, 40, 50];

// 循环数据并绘制矩形
for (var i = 0; i < data.length; i++) {
  // 计算矩形的高度
  var barHeight = data[i] / 100 * 200;

  // 计算矩形的x坐标
  var x = i * (barWidth + barSpacing);

  // 计算矩形的y坐标
  var y = canvas.height - barHeight;

  // 绘制矩形
  ctx.fillRect(x, y, barWidth, barHeight);
}

// 添加动画
setInterval(function() {
  // 清除画布
  ctx.clearRect(0, 0, canvas.width, canvas.height);

  // 循环数据并绘制矩形
  for (var i = 0; i < data.length; i++) {
    // 计算矩形的高度
    var barHeight = data[i] / 100 * 200;

    // 计算矩形的x坐标
    var x = i * (barWidth + barSpacing);

    // 计算矩形的y坐标
    var y = canvas.height - barHeight;

    // 绘制矩形
    ctx.fillRect(x, y, barWidth, barHeight);
  }

  // 移动画布
  canvas.scrollLeft += 1;
}, 50);

示例代码

以下是一些示例代码,您可以将这些代码用于自己的项目中:

// 创建画布
var canvas = document.createElement('canvas');
canvas.width = 500;
canvas.height = 300;

// 获取画布上下文
var ctx = canvas.getContext('2d');

// 设置矩形宽度
var barWidth = 50;

// 设置矩形之间的间距
var barSpacing = 10;

// 获取数据
var data = [10, 20, 30, 40, 50];

// 循环数据并绘制矩形
for (var i = 0; i < data.length; i++) {
  // 计算矩形的高度
  var barHeight = data[i] / 100 * 200;

  // 计算矩形的x坐标
  var x = i * (barWidth + barSpacing);

  // 计算矩形的y坐标
  var y = canvas.height - barHeight;

  // 绘制矩形
  ctx.fillRect(x, y, barWidth, barHeight);
}

// 添加动画
setInterval(function() {
  // 清除画布
  ctx.clearRect(0, 0, canvas.width, canvas.height);

  // 循环数据并绘制矩形
  for (var i = 0; i < data.length; i++) {
    // 计算矩形的高度
    var barHeight = data[i] / 100 * 200;

    // 计算矩形的x坐标
    var x = i * (barWidth + barSpacing);

    // 计算矩形的y坐标
    var y = canvas.height - barHeight;

    // 绘制矩形
    ctx.fillRect(x, y, barWidth, barHeight);
  }

  // 移动画布
  canvas.scrollLeft += 1;
}, 50);

您可以根据自己的需要修改这些代码,以便创建出符合自己需求的柱状图。