美文网首页
多层饼图(球形饼图)+ 圆点在圆的边缘上拖尾旋转

多层饼图(球形饼图)+ 圆点在圆的边缘上拖尾旋转

作者: 前端_酒館 | 来源:发表于2022-04-29 16:59 被阅读0次

HTML布局:

<div class="partyCompositionChat">
    <div class="wh-100" id="academicCompositionChat"></div>//两层饼图放进echarts里绘制,wh-100 是宽高百分百
    <div class="partyCompositionCircular">
        <canvas id="canvas" width="100" height="100"/></canvas> //canvas 绘制内心圆以及在圆上旋转的圆点+拖尾
        <div class="partyCompositionCircularList">
        //  内心圆中的文案
        </div>
    </div>
</div>

最外面一层饼图+淡一点的环形:(代码)

function academicCompositionChat(){
    let Chart = echarts.init(document.getElementById('academicCompositionChat'));
    let option = {
        title:{
              text: '党员学历组成情况',
               textStyle: {
              color: '#2E72E3',
              fontSize: 20,
            },
            left: 'center',
            y: 'bottom',
          },
        legend: {
            width: 150,
           itemWidth: 9,
            itemHeight: 9,
            icon: 'circle',
            y: 'bottom',
            padding: [0, 0, 50, 0],
            textStyle: {
              fontSize: 16,
              fontFamily: 'Adobe Heiti Std',
              color: '#fff'
            }
        },
        series: [
            {
                name: '',
                type: 'pie',
                selectedMode: 'single',
                radius: ['60%', '71%'],
                center: ['50%', '35%'],
                label: {
                    show: false
                },
                zlevel: 1,
                labelLine: {
                    show: false
                },
                color: ['#0B4876'],
                data: [
                    {value: 0},
                ]
            },
            {
                name: '',
                type: 'pie',
                radius: ['70%', '80%'],
                center: ['50%', '35%'],
                label: {
                   show: false
                },
                color: ['#ffffff', '#90E446', '#21BAD6', '#E4A746'],
                itemStyle:{
                    borderWidth: 5,
                    borderColor: '#063065',
                },
                data: [
                    {value: 50, name: '硕士'},
                    {value: 50, name: '博士'},
                    {value: 100, name: '专科'},
                    {value: 100, name: '本科'},
                ]
            }
        ]
    };
    Chart.setOption(option);
}

圆点在圆的边缘上拖尾旋转:(代码)

function draw(){
    var c   = document.getElementById("canvas");
    var ctx = c.getContext("2d");
    ctx.clearRect(0, 0, 100, 180);
    ctx.save();
    ctx.translate( 50, 50);
  
    //绘制earth轨道(内心圆)
    ctx.beginPath();
    ctx.arc(0, 0, 45, 0, 2 * Math.PI, true);
    ctx.fillStyle = 'rgba(33, 186, 214, 0.2)';
    ctx.strokeStyle = "rgba(33, 186, 214, 0.2)";
    ctx.fill();
    ctx.stroke();
    let time = new Date();
  
  //绘制拖尾
    ctx.beginPath();
    //转动速度
    ctx.rotate(2 * Math.PI / 6 * time.getSeconds() + 2 * Math.PI / 6000 * time.getMilliseconds());
    //控制渐变颜色
    var gr = ctx.createLinearGradient(60, 45, 90, 0);
    gr.addColorStop(0, '#21BAD6');
    gr.addColorStop(1, 'transparent');
    
    ctx.arc(0, 0, 45, 30, Math.PI / 2, false); //第四个参数配合createLinearGradient里的参数控制拖尾的长度
    ctx.lineWidth = 3;
    ctx.strokeStyle = gr;
    ctx.stroke();
  
    //绘制拖尾前面的圆点
    ctx.beginPath();
    ctx.translate(40, 0);
    ctx.arc(-45, 45, 3, 0, 2 * Math.PI, false);//前两个参数可以控制圆点的位置
    ctx.fillStyle = '#21BAD6';
    ctx.strokeStyle = "#21BAD6";
    ctx.fill();
    ctx.stroke();
    //后面这两行代码非常重要,不能忽略
    ctx.restore();
    requestAnimationFrame(draw);
}

把它们组合在一起的样式

.partyCompositionChat{
    width: 30%;
    height: 100%;
    position: relative;
}

.partyCompositionCircular{
    width: 100px;
    height: 100px;
    position: absolute;
    left: 27%;
    top: 58px;
}


.partyCompositionCircularList{
    width: 50%;
    height: 50%;
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    text-align: center;
    font-size: 24px;
    font-family: Adobe Heiti Std;
    font-weight: normal;
    color: #B8D3F1;
    overflow: hidden;
    line-height: 25px;
}

.partyCompositionCircularList .partyOrganizationChatTextItem{
    padding: 0;
    font-size: 18px;
}

效果图:这是不同时间的两张效果图


微信图片_20220429165453.png 微信图片_20220429165447.png

如果这篇文章对你有用话的,请帅哥美女点个赞!!!(严禁转载)

相关文章

  • 多层饼图(球形饼图)+ 圆点在圆的边缘上拖尾旋转

    HTML布局: 最外面一层饼图+淡一点的环形:(代码) 圆点在圆的边缘上拖尾旋转:(代码) 把它们组合在一起的样式...

  • openpyxl3.0官方文档(13)—— 饼图

    饼图¶ 饼图将数据绘制为圆的切片,每个切片表示整个圆的百分比。切片按顺时针方向绘制,0°位于圆的顶部。饼图只接受一...

  • PPT技巧:如何设置一个饼图的旋转动画?

    如何能搞一个类似乔布斯演示的饼图动画效果? 问题:怎么实现圆的中心旋转效果? 解答:利用PPT“轮子”动画实现。 ...

  • R 数据可视化 —— 饼图

    前言 饼图,是将总体看作一个圆,按照各分类的占比情况将圆划分大小不同的扇形,以弧度的大小来表示某一分类的占比。 饼...

  • Power BI旭日图:真的很炫酷

    在展示不同分类的占比情况时,常常会用到饼图,但遇到多层次的数据时,饼图就显得力不从心,不过还有个更强大的"饼图"可...

  • 中秋节,你回家了吗?回到了你的故乡了吗?

    中 秋 之 圆 中秋,月是圆的,饼是圆的,最关键的是,心,也是要圆的。月之圆、饼之圆以兆人之团圆,于是,我们该有的...

  • Flutter 113: 图解自定义 ACEPieWidget

    小菜上一节尝试绘制了一个简单的饼状图,今天尝试添加一点手势操作,可以随手指旋转饼状图; ACEPieWidget ...

  • vue+elementUi+echarts 折线图组件

    echarts官网 效果 ? 此图并非折线图饼图联动 折线图饼图联动组件飞机票 ?饼图点击事件再饼图组件中 饼图组...

  • 【R语言】多层饼图

    需求是推动探索的重要动力!在学习的路上,很多东西都是从需求出发的!带着目的去探索,能够更快地找到与之对应的解决方法...

  • 2018-02-27

    一平盆面,烙一平盆饼,饼碰盆,盆碰饼。 山前有个严圆眼,山后有个严眼圆,二人山前来比眼,不知是严圆眼的眼圆,还是严...

网友评论

      本文标题:多层饼图(球形饼图)+ 圆点在圆的边缘上拖尾旋转

      本文链接:https://www.haomeiwen.com/subject/brbsyrtx.html