`
企鹅木白
  • 浏览: 34347 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

canvas画饼状图

阅读更多
   首先代码并不是原创。
   然后,准备弄一个根据数据库创建图表的框架,所以自己现在网上学了一点,先做个饼状图来看看:
   <script type="text/javascript" language="javascript">
//设置几个全局变量 计数,概率名数组,概率大小数组,还有分类颜色数组
var DataNum = 0;
var data_arr = new Array();//
        var text_arr = new Array();
        var color_arr = new Array();
        var color_arr = ["#00FF21", "#FFAA00", "#00AABB", "#FF4400","#FF0000"];//颜色可以多弄几个但是我懒得弄
       
function run(){  //执行画图方法
drawCircle("canvas_circle");
}
function drawCircle(canvasId){ //画饼状图的方法
data_arr = new Array();
text_arr = new Array();//每次执行都要初始化数据
if(DataNum == 0){
alert("无数据");
return;
}
else{
var j=parseFloat(0);
for(var i = 0; i < DataNum; i++){    //动态添加
data_arr[i] = document.getElementById("data_arr"+i).value;  //数据
text_arr[i] = document.getElementById("text_arr"+i).value;  //数据名称
j=parseFloat(j)+parseFloat(data_arr[i]); //相加的时候强制转换成浮点型,否知直接字符相加
}
if(j!=1){alert("输入比例不为1,请输入正确的比例");return;}
}

var c = document.getElementById(canvasId); //获取canvas对象
var ctx = c.getContext("2d");
alert("ss");
ctx.clearRect(0,0,500,500);
var radius = c.height /2-20; //半径
var ox = radius +20, oy = radius +20; //圆心
var width = 30, height = 10; //图例宽和高 
            var posX = ox * 2 + 20, posY = 30;   // 
            var textX = posX + width + 5, textY = posY + 10; 
 
                var startAngle = 0; //起始弧度 
                var endAngle = 0;   //结束弧度 
                for (var i = 0; i < data_arr.length; i++) 
                { 
                    //绘制饼图 
                    endAngle = endAngle + data_arr[i] * Math.PI * 2; //结束弧度 
                    ctx.fillStyle = color_arr[i];  //选择颜色
                    ctx.beginPath(); 
                    ctx.moveTo(ox, oy); //移动到到圆心 
                    ctx.arc(ox, oy, radius, startAngle, endAngle, false); 
                    ctx.closePath(); 
                    ctx.fill(); 
                    startAngle = endAngle; //设置起始弧度 
 
                    //绘制比例图及文字 
                    ctx.fillStyle = color_arr[i]; 
                    ctx.fillRect(posX, posY + 20 * i, width, height); 
                    ctx.moveTo(posX, posY + 20 * i); 
                    ctx.font = 'bold 12px 微软雅黑';    //斜体 30像素 微软雅黑字体 
                    ctx.fillStyle = color_arr[i]; //"#000000"; 
                    var percent = text_arr[i] + ":" + 100 * data_arr[i] + "%"; 
                    ctx.fillText(percent, textX, textY + 20 * i); 
                }
               
            } 
            function add(){ //添加数据
            var new1 = dataInput.insertRow();
            var new11 = new1.insertCell();
var new12 = new1.insertCell();
new11.innerHTML ="数据名:<input type='text' size='10'id='text_arr"+DataNum+"'/>";
new12.innerHTML ="百分比:<input type='text' size='10'id='data_arr"+DataNum+"'/>";
            DataNum++;
            }
 
            //页面加载时执行init()函数 
           // window.onload = init; 
</script>
        就这些,先记着,也许以后有用。
       下面是HTML5代码
       <canvas id="canvas_circle" width="500" height="300"> 
            浏览器不支持canvas 
        </canvas>  
分享到:
评论

相关推荐

    html5 canvas画饼状图

    在这个项目中,我们将探讨如何使用HTML5的Canvas API来创建饼状图。 首先,我们需要了解Canvas的基本用法。HTML5的`&lt;canvas&gt;`元素提供了一个二维渲染上下文,我们可以通过JavaScript访问这个上下文,调用其提供的...

    Android 画饼图

    本项目"Android 画饼图"旨在提供一个立体和平面效果的饼图组件,适用于各种需要展示部分与整体之间关系的应用场景。下面将详细介绍如何在Android中实现饼图,以及相关的关键知识点。 首先,我们要理解饼图的基本...

    javascript画饼图

    JavaScript 画饼图是一种在网页上可视化数据的常见方法,特别是在数据分析和信息展示中。饼图可以直观地表示各部分占整体的比例,非常适合用来展示各项数据的占比情况。在这个话题中,我们将深入探讨如何使用纯 ...

    js 画饼图 javascript

    在JavaScript的世界里,画饼图是一种常见的数据可视化方式,它能直观地展示各项比例关系,尤其适用于呈现多个部分组成整体的情况。"JS完美画饼图"这个话题涉及到使用JavaScript库或者自定义代码来创建动态、交互式的...

    html5 canvas饼形数据统计图形代码_可下载饼形数据统计图

    下面我们将深入探讨如何利用Canvas API创建饼形图。 首先,我们需要一个Canvas元素在HTML中,通过`&lt;canvas&gt;`标签来定义。然后,我们需要获取到这个Canvas元素的2D渲染上下文,这通常通过调用`canvas.getContext('2d...

    用matlab画饼状图代码-onyon:适用于C++的可扩展且灵活的数据可视化框架

    用matlab画饼状图代码 昂永 :onion: 因为如果我必须再次启动MATLAB,我将结束自己:trade_mark: 一个与C ++ 98兼容的可扩展数据可视化框架。 通过相互叠加图像生成层(背景,轴处理程序,图例,绘图仪等)来创建动态...

    android画饼图

    "android画饼图"这个主题主要涉及到如何在Android应用中自定义一个饼状图控件。在这个项目中,开发者分享了其在GitHub上的源代码,供其他开发者学习和使用。 1. **自定义控件**:在Android中,如果系统自带的图表库...

    使用API画饼状图的实例

    Android本身虽然提供了Canvas类来支持自定义绘图,但直接用它来绘制复杂的图表会比较繁琐。因此,通常我们会选择第三方库,如`MPAndroidChart`。这个库功能强大,易于使用,且社区活跃,有丰富的文档和示例。 `...

    利用Tkinter和matplotlib两种方式画饼状图的实例

    windows.title("画饼图") # 设置画布样式 canvas = Canvas(windows, height=500, width=500) # 将画布打包到窗口 canvas.pack() # 利用画布的create_arc画饼形 # (400,400)和(100,100)为饼形外围的矩形...

    Android之动态折线、柱状、饼状图的实现

    你可以使用`Path`对象画折线,`RectF`对象画柱子,以及`Paint`对象设置颜色和样式。 - **数据绑定**:你需要为每个数据点创建坐标,并根据数据更新绘图逻辑。 - **动画效果**:为了实现动态效果,可以使用`...

    HTML5 canvas实现的鼠标拖拉和点击生成甜甜圈饼干动画效果源码.zip

    Canvas是一个基于矢量图形的画布,通过JavaScript API可以实现动态、可交互的图形绘制。开发者可以使用路径、矩形、圆形、文字、图像等多种元素进行绘图,并可以对这些元素进行变换、颜色处理、混合模式等操作。 在...

    delphi Canvas 图形绘制

    这将在Canvas上画出一条从(10,10)到(100,100)的蓝色线。 3. **绘制面** 绘制面通常涉及填充形状,如矩形、椭圆或自定义路径。使用`FillRect`或`Rectangle`方法绘制矩形,`Ellipse`或`RoundRect`绘制椭圆或圆角...

    HTML5 Canvas饼状图表

    在HTML5 Canvas中,我们可以利用`arc()`方法来绘制圆弧,结合`beginPath()`和`stroke()`或`fill()`来完成饼状图的制作。 首先,你需要创建一个`&lt;canvas&gt;`元素并在HTML中插入,然后通过JavaScript获取Canvas的2D渲染...

    HTML5中秋吃月饼大赛游戏.zip

    在这个游戏中,`&lt;canvas&gt;`可能被用来绘制游戏场景、角色(玩家和月饼)以及游戏得分等元素。开发者会利用JavaScript的绘图API,如`context.beginPath()`、`context.arc()`、`context.fill()`等方法来创建动态的游戏...

    JavaScript用canvas元素实现2D和3D借鉴.pdf

    `canvas`元素的使用可以简化报表和图表的生成,例如在日本的一些网站上,提供了丰富的HTML5和`canvas`相关资源,以及基于`excanvas.js`的简单柱状图和圆饼图控件。这些控件易于使用和维护,尤其适合内网环境,因为...

    微信小程序 绘图之饼图实现

    &lt;canvas canvas-id="canvas2" style="width:200px;height:200px;border:1px solid #ccc;margin-top:100px;"&gt;&lt;/canvas&gt; ``` 接下来,我们需要在JavaScript文件中获取`canvas`的上下文(`context`)。微信小程序提供...

    java利用jQuery生成饼图,折线图,柱状图

    本篇文章将深入探讨如何在Java项目中结合jQuery生成饼图、柱状图和折线图,帮助开发者提升数据展示的直观性。 首先,我们需要明白jQuery本身并不直接支持生成图表,但可以通过与第三方图表库结合来实现。例如,我们...

Global site tag (gtag.js) - Google Analytics