首页 > 其他 > 详细

svg绘制圆形数据分布图

时间:2020-10-23 09:43:08      阅读:24      评论:0      收藏:0      [点我收藏+]

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #div1{width: 600px;height: 600px;background: white; margin:20px auto; overflow: hidden;}
        body{background: gray;}
    </style>
</head>
<body>
    <div id="div1"> 
        <svg id = "svg1" xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" >

        </svg> 
        
    </div>
</body>
</html>
<script>
    window.onload = function()
    {
        var svgNS = ‘http://www.w3.org/2000/svg‘;
        var oParent = document.getElementById(‘div1‘);
        var oSvg = document.getElementById("svg1");
 

     /* 封装一个创建标签的函数 */
      function createTag(tag,objAttr)
     {
       var oTag = document.createElementNS(svgNS,tag);
    
       for(var attr in objAttr)
       {
           oTag.setAttribute(attr,objAttr[attr]);
       }
       return oTag;
     }
     
     var arrNum = [23.61,17.10,16.05,15.40,11.72,14.95];
     var angle = 360;
     var sumNum = 0;
     var outerR = 120;
     var innerR = 70;
     var centerX = 200;
     var centerY = 200;
     var outerXY = [{x:320,y:200}]
     var innerXY = [{x:270,y:200}];
     var arrColor = [‘red‘,‘blue‘,‘yellow‘,‘green‘,‘black‘,‘gray‘];
     for(var i =0;i<arrNum.length;i++)
     {
         var agNum = arrNum[i]/100*angle;
         sumNum += agNum;

         if(i==arrNum.length-1)
         {
             sumNum = 360;
         }
         var outerX = Math.cos(sumNum*Math.PI/180)*outerR + centerX;
         var outerY = Math.sin(sumNum*Math.PI/180)*outerR + centerY;
         outerXY.push({x:outerX,y:outerY});

         var innerX = Math.cos(sumNum*Math.PI/180)*innerR + centerX;
         var innerY = Math.sin(sumNum*Math.PI/180)*innerR + centerY;
         innerXY.push({x:innerX,y:innerY});

     }

     for(var i =0 ;i<outerXY.length;i++)
     {
         if(i == outerXY.length-1)
         {
             break;
         }
         var oPath = createTag(‘path‘,{fill:arrColor[i],d:‘M‘+outerXY[i].x+‘ ‘+
         outerXY[i].y+‘A‘+outerR+‘ ‘+outerR+‘ ‘+‘ 0 0 1 ‘+outerXY[i+1].x+‘ ‘+
         outerXY[i+1].y+‘L‘+innerXY[i+1].x+‘ ‘+innerXY[i+1].y+‘A‘+innerR+‘ ‘+
         innerR+ ‘ 0 0 0 ‘+innerXY[i].x+‘ ‘+innerXY[i].y});
         
         oSvg.appendChild(oPath);
     }
 

    }

    


</script>

技术分享图片

 

svg绘制圆形数据分布图

原文:https://www.cnblogs.com/Aaron-Lee/p/13861846.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!