Canvas 根据比例画折线图

本文演示如何在HTML中利用Canvas API和line.js库,根据指定比例绘制出精准的折线图。通过这个Demo,开发者可以了解Canvas绘图的基础以及如何封装JS来实现动态图表生成。
摘要由CSDN通过智能技术生成


demo.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        canvas {
            border: 1px solid red;
        }
    </style>
</head>
<body>
    <canvas id="cvs" width="500" height="500"></canvas>
    <script>
        var cvs = document.getElementById('cvs');
        var ctx = cvs.getContext('2d');

        ctx.lineWidth = 2;

        // 坐标轴距离画布上右下左的边距
        var padding = {
            top: 20,
            right: 20,
            bottom: 20,
            left: 20
        }

        // 坐标轴中箭头的宽和高
        var arrow = {
            width: 12,
            height: 20
        }

        // 求坐标轴上顶点的坐标
        var vertexTop = {
            x: padding.left,
            y: padding.top
        }

        // 求坐标轴原点的坐标
        var origin = {
            x: padding.left,
            y: cvs.height - padding.bottom
        }

        // 求坐标轴右顶点的坐标
        var vertexRight = {
            x: cvs.width - padding.right,
            y: cvs.height - padding.bottom
        }


        // 画坐标轴中的两条线
        ctx.moveTo( vertexTop.x, vertexTop.y );
        ctx.lineTo( origin.x, origin.y );
        ctx.lineTo( vertexRight.x, vertexRight.y );
        ctx.stroke();

        // 画上顶点箭头
        ctx.beginPath();
        ctx.moveTo( verte
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是实现方法: 1. 首先准备一个canvas元素和一个绘制上下文(canvas.getContext("2d"))。 2. 设定坐标轴的起始点、结束点和轴线的颜色、粗细等样式。 3. 通过绘制直线的方法lineTo()和moveTo(),在布上绘制出横纵坐标轴。 4. 根据折线的坐标数组,使用lineTo()方法依次连接每个坐标点。在连接每个坐标点时,需要根据坐标轴的起始点和结束点来计算出实际的坐标位置。 5. 最后,使用stroke()方法将折线绘制出来。 下面是一个简单的绘制折线的示例代码: ```html <canvas id="myCanvas" width="400" height="400"></canvas> <script> var canvas = document.getElementById("myCanvas"); var ctx = canvas.getContext("2d"); // 设置坐标轴的起始点、结束点和轴线的颜色、粗细等样式 ctx.beginPath(); ctx.moveTo(50, 350); ctx.lineTo(350, 350); ctx.moveTo(50, 50); ctx.lineTo(50, 350); ctx.strokeStyle = "#000"; ctx.lineWidth = 2; ctx.stroke(); // 定义折线的坐标数组 var data = [20, 50, 80, 120, 200, 300]; // 根据坐标轴的起始点和结束点计算出实际的坐标位置,并使用lineTo()方法连接每个坐标点 ctx.beginPath(); for (var i = 0; i < data.length; i++) { var x = 50 + i * 50; var y = 350 - data[i]; ctx.lineTo(x, y); } ctx.strokeStyle = "#f00"; ctx.lineWidth = 2; ctx.stroke(); </script> ``` 在上面的示例代码中,我们首先绘制了坐标轴,然后定义了一个包含6个坐标点的数组,最后根据数组数据绘制出了一条折线。你可以根据实际需要修改坐标轴的样式、坐标点的数据和绘制折线的颜色等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值