Echarts实训项目之咖啡店热门订单分析(绘制饼图与折线图联动图表)

1.训练要点

 (1)掌握 ECharts 多图表联动图形的绘制。

(2)掌握 ECharts 加载异步数据。

2.需求说明 基于“咖啡店年订单json”数据,绘制饼图与折线图的多图表联动,对咖啡店各年的订单数据进行分析。

{
"data":[
{"value":172.9, "name":"2012年"},{"value":232.8, "name":"2013年"},
{"value":254.5, "name":"2014年"},{"value":177.8, "name":"2015年"},
{"value":206.3, "name":"2016年"},{"value":235.4, "name":"2017年"}
],
"product":["2012年", "2013年", "2014年", "2015年", "2016年", "2017年"],
"values1":[56.5, 82.1, 88.7, 70.1, 53.4, 85.1],
"values2":[51.1, 51.4, 55.1, 53.3, 73.8, 68.7],
"values3":[40.1, 62.2, 69.5, 36.4, 45.2, 32.5],
"values4":[25.2, 37.1, 41.2, 18, 33.9, 49.1],
"names1":"Milk Tea",
"names2":"Matcha Latte",
"names3":"Cheese Cocoa",
"names4":"Walnut Brownie"
}

3.实现思路及步骤

(1)在VS Code中创建PieLineChartLinkage.html文件。

(2)绘制饼图与折线图联动图表。首先,在PeLinehartLinkage.html 文件中引入 echarts js 库文件。

其次,准备一个具备大小(weight与 height)的 div容器,并使用init()方法初始化容器。最后设置饼图

与折线图的图表样式后,获取数据、填入数据并显示图表。

4.完整代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="js/echarts.js"></script>
</head>
<body>
    <div id="main1" style="width: 600px; height: 400px;"></div>
    <div id="main2" style="width: 600px; height: 400px;"></div>
    <script type="text/javascript">
        var myChart1=echarts.init(document.getElementById("main1"));
        var waterMarkText = 'nice!'; // 设置水印的字符
		var canvas = document.createElement('canvas');
		var ctx = canvas.getContext('2d');
		canvas.width = canvas.height = 100;
		ctx.textAlign = 'center';
		ctx.textBaseline = 'middle';
		ctx.globalAlpha = 5;
		ctx.font = '8px Microsoft Yahei'; // 设置水印文字的字体
		ctx.translate(70, 70); // 设置水印文字的偏转值
		ctx.rotate(-Math.PI / 4); // 设置水印旋转的角度
		ctx.fillText(waterMarkText, 0, 0); // 设置填充水印
        var option1={
            backgroundColor: {type:'patten',image:canvas,repeat:'repeat'},
            title:{
            text:'咖啡店年订单数据分析',
            left:'center'
            },
            tooltip:{
                trigger:'item',
                formatter:"{a}<br/>{b}:{c}({d}%)"
            },
            legend:{
                orient:'vertical',
                left:62,
                top:22,
                data:["2012年", "2013年", "2014年", "2015年", "2016年", "2017年"]
            },
            toolbox:{
                show:true,
                left:444,
                top:28,
                feature:{
                    mark:{show:true},
                    dataView:{show:true,readOnly:false},
                    magicType:{
                        show:true,
                        type:['pie','funnel'],
                        option:{
                            funnel:{
                                x:'25%',
                                width:'50%',
                                funnelAlign:'left',
                                max:1548
                            }
                        }
                    },
                    restore:{show:true},
                    saveAsImage:{show:true}
                }
            },
            calculable:true,
        series: [
            {
            name: '订单量',
            type: 'pie',
            radius:'66%',
            center:['58%','55%'],
            clockWise:true,
            data: [
            {"value":172.9, "name":"2012年"},
            {"value":232.8, "name":"2013年"},
            {"value":254.5, "name":"2014年"},
            {"value":177.8, "name":"2015年"},
            {"value":206.3, "name":"2016年"},
            {"value":235.4, "name":"2017年"}
            ]
            }
        ]
        };
    var myChart2=echarts.init(document.getElementById("main2"))
    var waterMarkText = 'nice!'; // 设置水印的字符
    var canvas = document.createElement('canvas');
    var ctx = canvas.getContext('2d');
    canvas.width = canvas.height = 100;
    ctx.textAlign = 'center';
    ctx.textBaseline = 'middle';
    ctx.globalAlpha = 10;
    ctx.font = '8px Microsoft Yahei'; // 设置水印文字的字体
    ctx.translate(60, 60); // 设置水印文字的偏转值
    ctx.rotate(-Math.PI / 4); // 设置水印旋转的角度
    ctx.fillText(waterMarkText, 0, 0); // 设置填充水印
    var option2={
            backgroundColor: {type:'patten',image:canvas,repeat:'repeat'},
            title: {
                text: '咖啡店年订单数据分析',
            },
            // backgroundColor: 'rgba(204,204,204,0.7)',
            tooltip: {
                trigger: 'axis',
            },
            legend:{
                data:['Milk Tea','Matcha Latte','Cheese Cocoa','Walnut Brownie',],
                left:422,
                color:'blue',
                top:8
            },
            xAxis: {
               type: 'category',
               data: ['2012年', '2013年', '2014年','2015年','2016年','2017年']
            },
            yAxis: {
               type: 'value'
            },
            series: [
            {
            name: 'Milk Tea',
            type: 'line',
            data: [56.5, 82.1, 88.7, 70.1, 53.4, 85.1]
            },
            {
            name: 'Matcha Latte',
            type: 'line',
            data: [51.1, 51.4, 55.1, 53.3, 73.8, 68.7]
            },
            {
            name: 'Cheese Cocoa',
            type: 'line',
            data: [40.1, 62.2, 69.5, 36.4, 45.2, 32.5]
            },
            {
            name: 'Walnut Brownie',
            type: 'line',
            data: [25.2, 37.1, 41.2, 18, 33.9, 49.1]
            },
        ]
    };
    myChart1.setOption(option1);// 为myChart1对象加载数据
    myChart2.setOption(option2);// 为myChart2对象加载数据
    // 多图表联动配置方法1:分别设置每个echarts对象的group值
    myChart1.group='group1';
    myChart2.group='group1';
    echarts.connect('group1');
    // 多图表联动配置方法2:直接传入需要联动的echarts对象myChart1,myChart2
	echarts.connect([myChart1,myChart2]);
    </script>
</body>
</html>

5.效果

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值