Echarts 绘制散点图和仪表盘

文章介绍了如何使用EChartsJavaScript库在网页上实现散点图和动态仪表盘的绘制,包括引入库、初始化图表、配置选项和数据更新等步骤。
摘要由CSDN通过智能技术生成

一 绘制散点图

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- 步骤1:引入echarts.js文件 -->
    <script src="/js/echarts.min.js"></script>
    <!-- 
    步骤1:引入echarts.js文件
    步骤2:准备一个呈现图表的盒子
    步骤3:初始化echarts实例对象
    步骤4:准备配置项
    步骤5:将配置项设置给echarts实例对象
     -->
  </head>
  <body>
    <!-- 步骤2:准备一个呈现图表的盒子 -->
    <div style="width: 600px;height: 400px"></div>
    <script>
      // 步骤3:初始化echarts实例对象
      // 参数, dom,决定图表最终呈现的位置
      var mCharts = echarts.init(document.querySelector('div'))
      //定义相关data1和data2的初始值
      var data2 =[[468,3134352.75], 
                  [1547,8150670.62],
                  [748,4677846.24],
                  [601,4234075.23],
                  [2059,9903786.32],
                  [429,2657902.04],
                  [1012,5128837.07],
                  [561,3954075.17],
                  [422,2290201.87],
                  [1188,6193413.66],
                  [367,1695026.60],
                  [1232,6736514.25]]
      var data1 =['已购买客户数量','销售额']
            option = {
                title:{
                text:'客户数量与销售额相关分析',
                left: 'center', // 水平居中
                // top: 'top' // 垂直居中
            },
            toolbox:{       //工具箱
                show: true, 
                feature:{
 
                    saveAsImage: {   //添加下载工具箱
                        show: true,
                        title:'下载'
                    },
                }
            },
            tooltip: {        //浮窗效果
              trigger: 'axis',
              axisPointer: {
              type: 'shadow'
            },
            formatter: function (params) {   //格式化 tooltip 显示内容的
            var dataIndex = params[0].dataIndex;
            return data1[0] + ': ' + data2[dataIndex][0] + '<br/>' + data1[1] + ': ' + data2[dataIndex][1];
            }
            },
            xAxis: {
                name:'已购买客户数量'
            },
            yAxis: {
                name:'销售额'
            },
            series: [
        {
        symbolSize: 20,
        data: data2,            
        type: 'scatter'       //散点效果
        },
        {                       
        symbolSize: 20,         //设置尺寸
        data: [[2059,9903786.32],[367,1695026.60]], //找到最大值和最小值
        type: 'effectScatter'   //添加涟漪效果
        }
        
  ]
}
mCharts.setOption(option)
   
   
   
   </script>  
</body>
</html>

效果图和代码展示

 

二 绘制仪表盘

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <!-- 步骤1:引入echarts.js文件 -->
     <script src="js/echarts.min.js"></script>
     <style>
        #chart1, #chart2 {
            float: left;
            margin-right: 20px; /* 设置两个 div 之间的间距 */
        }
    </style>
</head>
<body>
    <button id="pauseButton">暂停</button> <!-- 新添加的按钮 -->
 
     <!-- 步骤2:准备两个呈现图表的盒子 -->
     <div id="chart1" style="width: 800px; height: 600px;"></div>
     <div id="chart2" style="width: 800px; height: 1000px;"></div>
     <script>
 
        //按钮效果
       var isPaused = false; // 标记是否处于暂停状态
          // 暂停/继续更新数据的函数
       function togglePause() {
            isPaused = !isPaused; // 切换暂停状态
            var button = document.getElementById('pauseButton')
            if (isPaused) {
                button.textContent = '继续' // 按钮显示“继续更新”
            } else {
                button.textContent = '暂停' // 按钮显示“暂停更新”
                intervalId = setInterval(refreshData, 2000); // 恢复定时器
            }
        }
        // 点击按钮时切换暂停状态
       document.getElementById('pauseButton').addEventListener('click', function () {
            togglePause(); // 调用togglePause函数切换暂停状态
        });
 
 
       // 步骤3:初始化echarts实例对象
       var chart1 = echarts.init(document.getElementById('chart1'))
       var chart2 = echarts.init(document.getElementById('chart2'))
        var data3= [[518, 3494768.89], [1747, 9256901.40], [848, 5017934.03], [673, 4547376.05], [2359, 11351234.98], [479, 2975019.23], [1162, 4836006.07], [597, 4338816.05], [472, 2384432.89], [1338, 6725379.34], [430, 1889511.10], [1382, 6153310.88]]
        // 更新数据的函数
       function refreshData(){ 
        if (!isPaused) { // 只有在非暂停状态下才更新数据
        var randomIndex = Math.floor(Math.random() * data3.length); // 随机选择data3中的一组数据的索引
        var randomData = data3[randomIndex]; // 根据索引获取随机数据
 
           // 设置仪表盘配置项并初始化图表
 
           //第一个例图
           chart1.setOption({
            title: {
                   text: '店铺销售情况', // 设置仪表盘的标题
                   left: 'center', // 标题居中显示
                   top: 'top' // 标题在顶部显示
               },
               tooltip: {
                   formatter: '{a} <br/>{b} : {c} 元' // 设置鼠标悬停时显示的提示信息格式
               },
               series: [{
                   name: '客户总数', // 仪表盘的名称
                   type: 'gauge', // 设置图表类型为仪表盘
                   min: 0, // 最小值
                   max: 2000, // 最大值
                   splitNumber: 20, // 刻度分割段数
                   data: [{ value: randomData[0], name: '客户总数' }] // 传入的数据
               }]
           })
 
           //第二个例图
           chart2.setOption({
            title: {
                   text: '店铺销售情况', // 设置仪表盘的标题
                   left: 'center', // 标题居中显示
                   top: 'top' // 标题在顶部显示
               },
               tooltip: {
                   formatter: '{a} <br/>{b} : {c} 元' // 设置鼠标悬停时显示的提示信息格式
               },
               series: [{
                   name: '销售额', // 仪表盘的名称
                   type: 'gauge', // 设置图表类型为仪表盘
                   radius: 300, // 设置仪表盘的大小,这里表示半径为整个图表容器宽度的300
                   min: 0, // 最小值
                   max: 14000000, // 最大值
                   splitNumber: 20, // 刻度分割段数
                   data: [{ value: randomData[1], name: '销售额' }] // 传入的数据
               }]
           })
       }
    }
       // 页面加载完成时执行的操作
       window.onload = function() {
           refreshData(); // 初始加载数据
           setInterval(refreshData, 2000); // 每隔2秒刷新一次数据
       }
     </script>
</body>
</html>

效果图展示

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用 echarts 绘制 3D 散点图,你需要使用 echarts-gl 插件,它是 echarts 的 WebGL 扩展插件,提供了一些新的图表类型,包括 3D 散点图。下面是一个简单的示例: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ECharts 3D Scatter Diagram</title> <script src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/echarts-gl/dist/echarts-gl.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/echarts-gl/dist/extension/dataTool.min.js"></script> </head> <body> <div id="chart" style="width: 600px;height:400px;"></div> <script> var chart = echarts.init(document.getElementById('chart')); var data = []; for (var i = 0; i < 10000; i++) { var x = Math.random() * 100; var y = Math.random() * 100; var z = Math.random() * 100; data.push([x, y, z]); } var option = { tooltip: {}, visualMap: { show: false, dimension: 2, min: 0, max: 100, inRange: { color: ['#ff7f50', '#87cefa', '#da70d6', '#32cd32'] } }, xAxis3D: {}, yAxis3D: {}, zAxis3D: {}, grid3D: { boxWidth: 200, boxDepth: 80, viewControl: { // projection: 'orthographic' }, light: { main: { intensity: 1.2, shadow: true }, ambient: { intensity: 0.3 } } }, series: [{ type: 'scatter3D', data: data, symbolSize: 2, itemStyle: { opacity: 0.8 } }] }; chart.setOption(option); </script> </body> </html> ``` 在这个示例,我们使用 `echarts-gl.min.js` 和 `dataTool.min.js` 这两个插件,创建了一个 3D 散点图。我们随机生成了 10000 个点的坐标,并将它们赋值给 `data` 变量。然后,我们定义了 `option` 对象,其包含了一些配置项,比如坐标轴、视角、光照等。最后,我们传递 `option` 对象给 `chart.setOption` 方法,将图表渲染到页面上。 注意,在使用 `echarts-gl` 插件绘制 3D 图表时,需要将 `xAxis`、`yAxis`、`zAxis`、`grid` 和 `series` 都改成对应的 3D 版本,即 `xAxis3D`、`yAxis3D`、`zAxis3D`、`grid3D` 和 `scatter3D`。同时,由于 WebGL 具有一定的兼容性要求,如果你的浏览器不支持 WebGL,可能无法正常显示 3D 图表。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值