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 ...
随机推荐
- 5-math中函数汇总
math.h 数学函数库,一些数学计算的公式的具体实现是放在math.h里,具体有:1 三角函数double sin (double);double cos (double);double tan ( ...
- Java文件下载详解
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException ...
- Golang 字符编码
需要添加的库 go get code.google.com/p/go.text/encoding go get code.google.com/p/go.text/transform 两个转码函数 i ...
- loadrunner--vugen录制脚本提示“无Internet访问。您可能无法录制并执行业务进程”
1.vugen录制脚本提示如下,为什么会提示这个呢?这个提示忽略会对录制脚本有影响吗?最好应该怎么操作? 惠普技术支持回复: 您可以试试,若点击“Yes”,是否可以继续录制网站?若可以的话,您也确定网 ...
- 如何设计Kafka?
著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:Sugar Su链接:http://zhuanlan.zhihu.com/ms15213/20545422来源:知乎 此文稿来 ...
- [Training Video - 5] [Groovy Script Test Step - Collections, Exceptions] Array and ArrayList
Array: def x = new String[5] x[0] = "India" x[1] = "USA" x[2] = "Korea" ...
- 删除重复记录的最新sql脚本
delete from tb1 where id in(select t2.minnum from(select MIN(t1.id) as minnum,t1.col1 as ars ,COUN ...
- python 中numpy的var,std及cov
var:表示方差, 即各项-均值的平方求和后再除以N , std:表示标准差,是var的平方根. cov:协方差 ,与var类似,但是除以(N-1)
- Atom 编辑器侧边栏忽略隐藏文件
设置中配置需要忽略的文件后缀 package中找到treeview,勾选上这个配置就行
- Spring3.x错误----java.lang.ClassNotFoundException:org.aspectj.weaver.reflect.ReflectionWorld$ReflectionWorldException
Spring3.x错误: 解决方法: 缺少aspectjweaver.jar包 下载地址: https://cn.jarfire.org/aspectjweaver.html