canvas+js画饼状图
效果:
源码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>饼状图</title>
</head>
<body>
<canvas id="canvas"></canvas>
<script> (function () {
var data = [{
"value":"0.4",
"color":"red",
"name":"JAVA"
},{
"value":"0.3",
"color":"green",
"name":"PYTHON"
},{
"value":"0.2",
"color":"blue",
"name":"C++"
},{
"value":"0.1",
"color":"grey",
"name":"PHP"
}];
var canvas = document.getElementById("canvas");
//设置宽高不从css中设置
canvas.width = 600;//设置canvas宽
canvas.height = 600;//设置canvas高
canvas.style.border = "1px solid red";
//获取上下文
var ctx = canvas.getContext("2d");
//画图
var x0 = 300,y0 = 300;//圆心
var x,y;//文字放置位置
var radius = 100;
var tempAngle = -90;//画圆的起始角度
for(var i = 0;i<data.length;i++){
var startAngle = tempAngle*Math.PI/180;//起始弧度
var angle = data[i].value*360;
var endAngle = (tempAngle+angle)*Math.PI/180;//结束弧度
var textAngle = tempAngle + 0.5*angle;//文字放的角度
x = x0 + Math.cos(textAngle*Math.PI/180)*(radius+20);//文字放的X轴
y = y0 + Math.sin(textAngle*Math.PI/180)*(radius+20);//文字放的Y轴
//如果文字在圆形的左侧,那么让文字 对齐方式为 文字结尾对齐当前坐标。
if( textAngle > 90 && textAngle < 270 ) {
ctx.textAlign = 'end';
}
var text = data[i].name + " "+ data[i].value*100+"%";
ctx.fillText(text,x,y);
ctx.beginPath();
ctx.moveTo(x0,y0);
ctx.fillStyle = data[i].color;
ctx.arc(x0,y0,radius,startAngle,endAngle);
ctx.fill();
tempAngle += angle;
}
}());
</script>
</body>
</html>
canvas+js画饼状图的更多相关文章
- 利用Tkinter和matplotlib两种方式画饼状图
当我们学习python的时候,总会用到一些常用的模块,接下来我就详细讲解下利用两种不同的方式画饼状图.首先利用[Tkinter]中的canvas画布来画饼状图: from tkinter import ...
- canvas学习之饼状图
接着上一节说,这次我使用canvas绘制了饼状图,主要是SectorGraph.js, 引入 import {canvasPoint} from '../../assets/js/canvas';im ...
- vue中使用echarts画饼状图
echarts的中文文档地址:https://echarts.baidu.com/tutorial.html#5%20%E5%88%86%E9%92%9F%E4%B8%8A%E6%89%8B%20EC ...
- HTML5之Canvas绘图实例——饼状图
实现饼状分布画图(如下):调试环境:Firefox
- highcharts-3d.js实现饼状图
嘛,首先,废话一下,这个插件挺好用的.我是因为做亮灯率demo所以接触了它. 首先引用外部文件,jQuery.js,highcharts.js,highcharts-3d.js,好的,这就搞定了第一步 ...
- 用D3.js画树状图
做项目遇到一个需求,将具有层级关系的词语用树状图的形式展示它们之间的关系,像这样: 或者是这样: 上面的图片只是样例,跟我下面的代码里面用的数据不同 网上有很多这种数据可视化展示的js控件,我这里选择 ...
- D3.js:饼状图的制作
假设有如下数据需要可视化: var dataset = [ 30 , 10 , 43 , 55 , 13 ]; 这样的值是不能直接绘图的.例如绘制饼状图的一个部分,需要知道一段弧的起始角度和终止角度, ...
- python plotly 画饼状图
代码 import pandas as pd import numpy as np import plotly.plotly as py import plotly.graph_objs as go ...
- Python数据可视化:画饼状图、折线图、圈图
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. from math import pi import matplotlib ...
随机推荐
- ie11的仿真模式
1>在ie11的仿真模式中,所有版本的按钮都失效,解决方法:再ie的配置中,选项-高级-重置,然后重启ie11 程序员的基础教程:菜鸟程序员
- mybatis使用原始Dao开发中存在的问题
1.Dao方法存在重复代码:通过SqlSessionFactory创建SqlSession,调用SqlSession的送数据库操作方法. 2.调用SqlSession的数据库需要制定statement ...
- code1167 树网的核
floyd+枚举 看点: 1.floyd同时用数组p记录转移节点k,这样知道线段的端点u v就可以得到整条线段 2.任意一点c到线段a b的距离=(d[a][c]+d[c][b]-d[a][b])/2 ...
- 谈谈WhatsApp一年设计经历和收获
以下内容由Mockplus团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具. 关于WhatApp和Facebook如何实现规模设计的思考 我已经在Facebook担任产品经理 ...
- Linux下删除文件系统空间不释放的问题
删除了Linux下的一个文件,但是系统空间并没有被释放. 如下:/home/hadmin/data/hadoop 使用了1.3T的空间,但是实际只使用了600多G 原因是我删除了一个600多G的文件, ...
- 访问localhost的phpmyadmin出现访问被拒绝
原因是:没有配置MySQL数据库密码. 1.打开D:\wamp\apps\phpmyadmin x.xx找到config.inc.php. 修改并保存: $cfg['Servers'][$i]['us ...
- PHP 微信公众号开发 - 消息推送
项目微信公众号开发,需要做用户消息推送,记录下来以便日后使用 1,接上一篇文章,可以查看如何获取用户openid PHP 微信公众号开发 - 获取用户信息 2,添加模板消息 3,查看模板详情 根据模板 ...
- 8.3 mysql 表操作
库操作 一 系统数据库 information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息.列信息.权限信息.字符信息等 performance_sch ...
- 自我介绍及注册github和上传文件
自我介绍: 周侃 年龄20 喜好:玩游戏,赚钱,交际 理想:想要改变中国手游界颓靡的时代,让它进入新次元. 注册github,以及上传文件: 今天给大家来讲解下如何注册githup 当我们打开gith ...
- Centos 下安装tomcat多实例
基础环境及JDK就不多说了,下面的目录结构以如下为准: 根目录-apps根目录-apps--tomcat根目录-apps--ins1根目录-apps--ins2 =================== ...