canvas绘制随机颜色的柱形图
<!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哦
canvas绘制随机颜色的柱形图的更多相关文章
- canvas绘制随机验证码
效果图: 思路: 1, 绘制canvas画布,进行基础设置 2.绘制一个矩形 3.设置验证码的随机数 4.设置验证码随机数的随机颜色 5.绘制随机干扰线 6,绘制随机干扰点 经过以上六个步骤,验证码的 ...
- canvas绘制圆心扇形可组成颜色随机的七色小花
啊~现在应该还是春天吧.心情一如既往的烦闷呐.最近做了一个canvas的扇形绘制的东西.把它整理出来变成一个适合春天的花朵绘制~沉闷的工作环境已经让我这种有趣的人也变成了无聊鬼怪呢.下次一定想找一个年 ...
- 【重点突破】——Canvas技术绘制随机改变的验证码
一.引言 本文主要是我在学习Canvas技术绘图时的一个小练习,绘制随机改变的验证码图片,虽然真正的项目里不这么做,但这个练习是一个掌握Canvas技术很好的综合练习.(真正的项目中验证码图片使用服务 ...
- SVG绘制随机的柱形图+php
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- canvas绘制一定数目的圆(均分)
绘制多圆 2016年5月24日12:12:26 绘制一定数目(num)颜色随机的小圆,围成一个大圆.根据num完全自动生成,且小圆自动均分大圆路径(num≥20). 效果: 前置技能:(1).Canv ...
- canvas绘制太阳系
原文地址:http://jeffzhong.space/2017/10/26/solar/ 学习canvas有一段时间了,顺便写个小项目练手,该项目用到的知识点包括: ES6面向对象 基本的三角函数 ...
- java-js知识库之二——canvas绘制炫彩气泡
现在使用canvas绘制气泡,虽说很多人都已经实现过了,可能方法都大同小异,但自己写和看别人写完全是两码事,自己会写的才是自己的,话不多说,直接上代码. 先来一张效果图: 现在上代码,代码有详细的注释 ...
- Kivy 中文教程 实例入门 简易画板 (Simple Paint App):3. 随机颜色及清除按钮
1. 随机颜色 通过前面的教程,咪博士已经带大家实现了画板的绘图功能.但是,现在画板只能画出黄色的图案,还十分单调,接下来咪博士就教大家,如何使用随机颜色,让画板变得五彩斑斓. 改进后的代码如下: f ...
- 用canvas绘制验证码
在通常的登录界面我们都可以看到验证码,验证码的作用是检测是不是人在操作,防止机器等非人操作,防止数据库被轻而易举的攻破. 验证码一般用PHP和java等后端语言编写: 但是在前端,用canva或者SV ...
随机推荐
- Java包的使用
好处 1.类似于文件系统的文件夹,可以实现分类管理类文件,方便查找2.解决了同一个项目中同名类的冲突问题 包的创建 命名规范: 建议小写字母,并且采用域名倒置的写法 域名倒置:com.baidu ww ...
- Can you answer these queries? HDU 4027 线段树
Can you answer these queries? HDU 4027 线段树 题意 是说有从1到编号的船,每个船都有自己战斗值,然后我方有一个秘密武器,可以使得从一段编号内的船的战斗值变为原来 ...
- 小白学Python(14)——pyecharts 绘制K线图 Kline/Candlestick
Kline-基本示例 from pyecharts import options as opts from pyecharts.charts import Kline data = [ [2320.2 ...
- poj_3179 Corral the Cows (二分+二维前缀和+离散化)
[题目链接] http://poj.org/problem?id=3179 [参考] http://www.cnblogs.com/evenbao/p/9243183.html [算法] 二分答案+判 ...
- jquery chosen插件使用及select常用方法
1.chosen插件使用 chosen插件依赖于jQuery库或prototype,使用之前要先引入jQuery或prototype. 引入jquery插件和chosen插件,对需要美化的下拉框执行c ...
- python __str__repr__ 区别
__str__ __repr__ 两个内置函数都是调试常用的函数, 对象直接调用时会调用 __repr__的内容, __str__需要print一下对象才可以 两个函数的内容有时会写成相同内容 _ ...
- Taro -- 原生微信小程序转taro
微信小程序转Taro (转发https://nervjs.github.io/taro/docs/taroize.html) Taro 可以将你的原生微信小程序应用转换为 Taro 代码,进而你可以 ...
- mysql查询时间戳转换
mysql查询时间戳转换 SELECT FROM_UNIXTIME(create_time) FROM tablename; 更新时间为七天以后 UPDATE t_rebate_trade_item ...
- hInstWtsapi32 = LoadLibrary("Wtsapi32.dll");
https://www.cnblogs.com/beawesome/p/6473668.html 进程枚举 之类
- css 伪类选择器:checked实例讲解
css :checked伪类选择器介绍 css :checked伪类选择器用于选择匹配所有被选中的单选按钮(radio)或复选框(checkbox),你可以结合:checked伪类选择器和:not选择 ...