canvas绘制随机颜色的柱形图

2023-11-17

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        body{
            text-align: center;
        }
        canvas{
            background: #ddd;
        }
    </style>
</head>
<body>
<canvas id="canvas" width="800" height="700"></canvas>
<script src="jquery-3.2.1.js"></script>
<script>
//获取画笔工具
//创建变量保存画布宽度高度边界距离
//绘制统计图的轮廓
//发送ajax请求数据
//返回数据,动态绘制图形

    var elem = document.getElementById("canvas");
    var canvas = elem.getContext("2d");
        var w= 800,//画布宽度
                h = 700,//画布高度
                pd = 50 ;//统计图的内容到画布边界的距离
        canvas.strokeRect(pd,pd,w-2*pd,h-2*pd);
         $.ajax({
                type:"GET",    
                url:"saledata.php",
                success:function(data){
                    console.log("成功接收数据");
                    console.log(data);
                    //数据个数
                    //每个柱子/间距宽度
                    var count = data.length;
                    var barWidth = (w-2*pd)/(2*count+1);
                    for(var i = 0;i<count;i++){
                        var d = data[i];//第i月份的数量
                        //柱子的宽度
                        var bw = barWidth;
                        //柱子的高度
                        var bh = d.value;
                        //柱子的x
                        var bx = pd +(2*i+1)*barWidth;
                        //柱子的y
                        var by = h-pd-bh;
                        //绘制矩形
                        //canvas.strokeRect(bx,by,bw,bh);
                        canvas.fillStyle = rColor();
                        canvas.fillRect(bx,by,bw,bh); 
                    }
                },
                error:function(){
                    alert("网络出现故障,请检查!");
                }
         });
         function rColor(){
            var r = Math.floor(Math.random()*256);
            var g = Math.floor(Math.random()*256);
            var b = Math.floor(Math.random()*256);
            return `rgb(${r},${g},${b})`;
         }
</script>
</body>
</html>
<?php
    header("Content-Type:application/json;charset=utf-8");
    $rows = [];
    /*
    $rows=[
            ["月份"=>"一月","value"=>280],
            ["月份"=>"二月","value"=>270],
            ["月份"=>"三月","value"=>380],
            ["月份"=>"四月","value"=>280],
            ["月份"=>"五月","value"=>280],
            ["月份"=>"六月","value"=>210],
            ["月份"=>"七月","value"=>180],
            ["月份"=>"八月","value"=>280],
            ["月份"=>"九月","value"=>200],
            ["月份"=>"十月","value"=>280],
            ["月份"=>"十一月","value"=>300],
            ["月份"=>"十二月","value"=>300]
    ];
    */
    $rows[]=["月份"=>"1月","value"=>160];
    $rows[]=["月份"=>"2月","value"=>290];
    $rows[]=["月份"=>"3月","value"=>220];
    $rows[]=["月份"=>"4月","value"=>100];
    $rows[]=["月份"=>"5月","value"=>190];
    $rows[]=["月份"=>"6月","value"=>170];
    $rows[]=["月份"=>"7月","value"=>270];
    $rows[]=["月份"=>"8月","value"=>120];
    $rows[]=["月份"=>"9月","value"=>250];
    $rows[]=["月份"=>"10月","value"=>240];
    $rows[]=["月份"=>"11月","value"=>230];
    $rows[]=["月份"=>"12月","value"=>210];

    echo json_encode($rows);
?>

 ***********记得添加jquery-3.2.1.js哦

转载于:https://www.cnblogs.com/wangruifang/p/7517688.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

canvas绘制随机颜色的柱形图 的相关文章

随机推荐

  • JAVA数据库连接总结

    1 Oracle8 8i 9i数据库 thin模式 Class forName oracle jdbc driver OracleDriver newInstance String url jdbc oracle thin localhos
  • libuv异步文件读写

    libuv 异步文件读写 一 libuv编译环境 1 可查看另一篇 libuv 介绍与编译 http mp blog csdn net postedit 79193274 程序代码 include
  • 2022-04-30 Unity核心2——Sprite

    文章目录 一 Single 图片编辑 二 Multiple 图片编辑 三 Polygon 多边形编辑 四 Sprite Renderer 精灵渲染器 五 Sprite Creator 精灵创造者 六 Sprite Mask 精灵遮罩 七 S
  • Python语言基础—注释的作用及分类

    系列文章目录 Python语言基础 注释的作用及分类 Python语言基础 常用运算符总结 Python语言基础 定义变量与数据类型 Python语言基础 if判断和循环总结 Python语言基础 理解面向对象 Python语言基础 集合的
  • 学习之-Spring Cache缓存框架应用本地缓存

    此文章用于个人学习记录 原文地址 https zhuanlan zhihu com p 452315531 如果想了解springCache与redis的交互请看其他文章 缓存是web项目不可或缺的一部分 通过缓存能够降低服务器数据库压力
  • AIX logging

    复杂度2 5 机密度3 5 最后更新2021 05 15 AIX有很多log 不同的东西 程序 会log到不同的地方 这是有历史的操作系统无法避免的问题 太杂 太乱 有了新机制又要学 旧log又没法简单放弃或者改变 经由alog管理 查看
  • 假设在一个32位little endian的机器上运行下面的程序,结果是多少?

    假设在一个32位little endian的机器上运行下面的程序 结果是多少 假设在一个 32 位 little endian 的机器上运行下面的程序 结果是多少 include
  • 【每日进步一点点】C语言刷题技巧及训练1

    恭喜你发现宝藏 这里是刹那芳间 很高兴为您服务 C语言编程题 相信很多同学学校的C语言考试是上机做编程题叭 不要慌 这里将带你进行一个初步的入门 进行一些简单的编程题练习 Anyway 请一定要去多多实践 上机操作 还有 望具备空杯心态 这
  • React(五)- React组件的组合使用

    React 五 React组件的组合使用 一 Todo案例 1 1 组件的具体实现 1 1 1 Header 1 1 2 List 1 1 3 Item 1 1 4 Footer 1 2 父类App组件的实现 二 Todo案例的总结 Rea
  • opencv形态学操作

    连通性 在图像中 最 的单位是像素 每个像素周围有8个邻接像素 常 的邻接关系有3 种 4邻接 8邻接和D邻接 分别如下图所示 4邻接 像素p x y 的4邻域是 x 1 y x 1 y x y 1 x y 1 N p 表示像素p的4邻接
  • GRE隧道实验

    AR1 interface GigabitEthernet0 0 0 进入接口 ip address 10 1 12 1 255 255 255 0 ospf enable 200 area 0 0 0 200 AR2 interface
  • vue中使用百度webgl地图以及踩坑记录

    前言 在公司项目中 之前使用的是vue baidu map库 功能上使用暂无太大问题 最近需要在项目基础上添加一个大屏数据页面 并涉及到换肤功能 就是在换肤这里遇到了一些坑 使用个性化主题之后 出现 地图加载卡顿 白色方块 图层缩放最大等级
  • Windows使用模拟器启动AOSP源码编译的镜像

    正常情况下 源码编译后可直接执行emulator 启动编译好的镜像 但是如果使用的是server版的ubuntu系统 没有图形界面 或者WSL编译的源码 以及我当前情况 AMD CPU Hyper V ubuntu intel CPU好像没
  • 多线程之创建工作者线程和用户界面线程区别

    转帖 部分原创 1 工作者线程倾向于琐碎的处理 与它不同的是 用户界面线程具有自己的界面而且实际上类似于运行其他应用程序 创建线程而不是其他应用程序的好处是线程可与应用程序共享程序空间 这样可以简化线程与应用程序共享数据的功能 2 典型情况
  • 房产小程序需要加入哪些功能才能让用户喜欢?

    对于我们中国人来说 买房子可是一件大事 在以前大家购买房子需要到楼盘所在地了解 而现在互联网高速发展 人们足不出户通过微信小程序就可以了解各个地区的楼盘信息 这样确实节省下来不少时间 不过不是所有房产小程序都会让用户们喜欢 小程序需要加入合
  • Linux配置了环境变量JAVA仍然是openjdk

    问题描述 不使用openjdk 使用jdk 下载完后 也配置了环境变量 反复检查 etc profile bashrc 均没有错误 但是java version仍旧是openjdk 解决方案 需要删除 usr bin下的java文件
  • 趣图:太真实,程序员调 Bug 的写照

    点击上方公众号快速关注 不错过趣图 程序员调 Bug 的样子 非常真实 动图原作者是 我的邻居全是猫 网友评论 中国有圣人 哈哈哈 太形象了 最后干脆撂挑子不干了 破罐破摔了 她叫小明 所以发明回溯这个超能力的这个公司应该每年花一天专门纪念
  • GPT时代,是否还愿意将你的代码开源呢?

    日常 只是偶发的想法 仅供讨论 GPT是生成式AI 生成式的前提也是基于大量的学习资源 如果你的代码开源或者进入到大模型的学习库 GPT的能力可以迅速学习并掌握你的代码 GPT可以将你的代码提供给其他人 这个过程基本没有任何成本 也无需遵循
  • 安卓实现登录与注册界面

    使用Intent与Bundle传递数据 登录界面login xml 1 使用Relativelayout相对布局
  • canvas绘制随机颜色的柱形图