ECharts 图表嵌入表格样式的demo

news2024/11/20 1:42:32

心累。。。

如果条件允许,还是强烈建议 用 Echarts+html 来实现(表格部分由 html 来弄)。

这里是调研阶段,想看看 ECharts 原生能做到什么程度。

先贴上样图:

贴上完整代码:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <link rel="icon" href="/favicon.ico">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Vite App</title>
  <script crossorigin src="tool/jquery-1.9.1.min.js"></script>
  <script crossorigin src="tool/echarts-all4.js"></script>
  <!-- <script crossorigin src="assets/ChartCompoment.js"></script> -->
  <!--    <link rel="stylesheet" href="/assets/index-42ba4135.css">-->
</head>
<style>
  .charts {
    width: 100%;
    display: grid;
    grid-template-columns: repeat(1, minmax(0, 1fr));
    gap: 10px;

    border: 1px green solid;


  }

  .chart {
    width: 90%;
    height: 400px;
    background-color: rgb(255, 255, 255);
    /* border-radius: 10px; */
    /* box-sizing: border-box; */
    /* overflow: hidden; */
    /* border-radius: 16.503px; */
    /* background: linear-gradient(180deg, rgba(128, 251, 222, 0.17) -76.58%, rgba(249, 242, 213, 0.13) 122.06%);
    backdrop-filter: blur(14.250161170959473px); */

    border: 1px rgb(103, 122, 207) solid;
    margin: 0px;
  }
</style>

<body style="background-color: wheat;">


  <div id="demo_report_title">hello world,Rain!</div>


  <div class="charts">
    <div id="chart" class="chart" />
  </div>


  <script type="text/javascript">



    var chartDom = document.getElementById('chart');
    var myChart = echarts.init(chartDom);
    var option = getOption();

    option && myChart.setOption(option);



    function getOption() {

      let blue = [63, 99, 65, 85, 75, 78, '', 63, 99, 65, 85, 75];

      let row2 = blue.concat([298]);
      // 计算统计值
      // r1.push(arraySum(r1));

      let orange = [61, 99, 60, 15, 65, 43, 76, 34, '', 35, 12, 87];

      let row3 = orange.concat([300]);

      // r2.push(arraySum(r2));


      let red = [];
      for (let i = 0; i < blue.length; i++) {
        let r1_e1 = blue[i];
        let r2_e2 = orange[i];
        // if(r1_e1&&r2_e2){
        r2_e2 = r2_e2 ? r2_e2 : 0;
        r1_e1 = r1_e1 ? r1_e1 : 0;

        let cha = 0;
        if (r1_e1) {
          cha = (r2_e2 - r1_e1) / r1_e1;
        }
        if (cha) {

          // 截取两位小数
          cha = cha.toFixed(2);
        }

        // 取绝对值
        cha = Math.abs(cha);

        // 换算为 百分数

        cha = cha * 100;

        red.push(cha)

        // }
      }

      let row4 = red.concat(['']);

      let option = {

        grid: [
          {

          left: "15%",

          top: "10%",

          // right: "0%",

          bottom: "35%",

        },

        //第2个坐标系
        {
          left:'15%',
          top:'10%',
          bottom: "29%",
        },
        //第3个坐标系
        {
          left:'15%',
          top:'10%',
          bottom: "21%",
        },
        //第4个坐标系
        {
          left:'15%',
          top:'10%',
          bottom: "14%",
        },
        //第5个坐标系
        {
          left:'15%',
          top:'10%',
          bottom: "6%",
        }
      ],

        legend: {

          align: "left",

          itemGap: 18,

          orient: "vertical",

          textStyle: { color: "#000" },

          bottom: 25,

          left: 0,

          // data: [ "问题总计", "已整改","整改中", "已整改占比",],

          data: [
            {
              name: '基于项目实施前预判计算结果',
              // icon: 'none',
            },
            {
              name: '实际数据CIE',
              // icon: 'none'
            },
            {
              name: '偏差',
              icon: 'triangle',
            },
          ],

        },

        xAxis: [

          // 第一行 x 轴
          {

            data: [
              "2022 1",

              "2022 2",

              "2022 3",

              "2022 4",

              "2023 1",

              "2023 2",

              "2023 3",

              "2023 4",

              "2024 1",

              "2024 2",

              "2024 3",

              "2024 4",

              "总计",

            ],

            axisLine: {

              show: true, // X 轴轴线

              lineStyle: {

                color: "#000000",

                // width: 0,

              },

            },

            axisTick: {

              show: true, //隐藏X轴刻度

              // alignWithLabel: true, //类目轴中在 boundaryGap 为 true 的时候有效,可以保证刻度线和标签对齐

              length:117,

            },

            axisLabel: {

              show: true,

              textStyle: {

                color: "#333333", //X轴文字颜色

                fontSize: 14,

              },

              interval: 0,
              overflow: 'truncate',


            },

          },

          // 第二行 x 轴
          {

            position: 'bottom',

            offset: 30,
            gridIndex:1,

            axisPointer: {

              type: 'none',

            },

            axisLine: {

              show: true, //隐藏X轴轴线

              lineStyle: {

                color: "#000",

                // width: 0,

              },

            },

            axisLabel: {

              inside: true,

              textStyle: {

                fontSize: '12',

                color: '#000000'

              },

              interval: 0,

            },

            data: row2,


          },

          // 第三行 x 轴
          {

            position: 'bottom',

            offset: 34,

            gridIndex:2,

            axisPointer: {

              type: 'none',

            },

            axisLine: {

              show: true, //隐藏X轴轴线

              lineStyle: {

                color: "#000",

                // width: 0,

              },

            },

            axisLabel: {

              inside: true,

              textStyle: {

                fontSize: '12',

                color: '#000000'

              },

              interval: 0,

            },

            data: row3,

          },

          // 第四行 x 轴
          {

            position: 'bottom',

            offset: 35,

            gridIndex:3,

            axisPointer: {

              type: 'none',

            },

            axisLine: {

              show: true, //隐藏X轴轴线

              lineStyle: {

                color: "#000",

                // width: 0,

              },

            },

            axisLabel: {

              inside: true,

              textStyle: {

                fontSize: '12',

                color: '#000000'

              },

              interval: 0,

            },

            data: row4,

          },

          {
            gridIndex:4,
            offset: 20,
          }
        ],

        yAxis: [

          {

            type: "value",

            name: "y 左",

            nameTextStyle: {

              color: "#BDD8ff",

              fontSize: 12,

            },
            axisLine: {
              show: false,
            }
            ,
            splitLine: {

              show: false,

              lineStyle: {

                // color: "rgba(255, 255, 255, 0.15)",

                type: 'dotted', // dotted 虚线

              },

            },

            axisTick: {

              show: false,

            },

            axisLabel: {

              show: true,

              textStyle: {

                color: "#333333",

                fontSize: 12,

              },

            },

          },

          {

            type: "value",
            position: 'right',

            // name: "y 右",

            // offset: -40,
            nameTextStyle: { //坐标轴名称的文字样式

              color: "#7AB900",

              fontSize: 12,

            },

            splitLine: { //坐标轴在 grid 区域中的分隔线

              show: false,

              lineStyle: {

                width: 1,

                color: "#CED2DB",

              },

            },
            axisLabel: { //坐标轴刻度标签的相关设置

              show: true,

              textStyle: {

                color: "#333333",

                fontSize: 12,

              },
              // 使用字符串模板,模板变量为刻度默认标签 {value}
              formatter: '{value} %',
              // 使用函数模板,函数参数分别为刻度数值(类目),刻度的索引
              // formatter: function (value, index) {
              //   return value + 'kg';
              // }

            },
            axisTick: { //坐标轴刻度相关设置
              show: false,
            },
            axisLine: {
              show: false, //坐标轴轴线相关设置
            },


          },

          {
            gridIndex:1,
            axisLine: {
              show: false, //坐标轴轴线相关设置
            },
            
          },
          {
            gridIndex:2,
            axisLine: {
              show: false, //坐标轴轴线相关设置
            },
            
          },
          {
            gridIndex:3,
            axisLine: {
              show: false, //坐标轴轴线相关设置
            },
            
          },
          {
            gridIndex:4,
            axisLine: {
              show: false, //坐标轴轴线相关设置
            },
            
          },
        ],

        series: [


          {

            name: "基于项目实施前预判计算结果",

            type: "bar",

            // barWidth: 22,

            itemStyle: {

              color: '#B4C7E7'

            },

            label: {

              show: false,

              position: "top",

              distance: 0,

              color: "#333333",

              // formatter: "{c}" + "%",

            },
            // 与 第二个 x 轴的 data 对应
            data: blue,

          },
          
          {

            name: "实际数据CIE",

            type: "bar",

            // yAxisIndex: 1,
            label: {

              show: true,

              // position: "top",

              // distance: 0,

              // color: "#333333",

              // formatter: "{c}" + "%",

            },

            itemStyle: {

              color: "#F8CBAD"

            },

            data: orange,

          },

          {

            name: "偏差",

            type: "line",

            lineStyle: {

              color: "rgb(255, 0, 0)",

              width: 0,//线宽为0,就不会显示了

            },

            label: {
              show: true,
              formatter:'{c} %',
            },

            yAxisIndex: 1,

            // showSymbol: false,

            symbolSize: 15,

            symbol: 'triangle',

            data: red,

          },

          ,

          // 背景色
          // {

          //   // name: '背景',

          //   type: "bar",

          //   barWidth: 24,

          //   xAxisIndex: 0,

          //   yAxisIndex: 1,

          //   barGap: "-110%",

          //   data: [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100], //背景阴影长度

          //   itemStyle: {

          //     normal: {

          //       color: "rgba(214, 233, 252,0.5)",

          //     },

          //   },

          //   tooltip: {

          //     show: false,

          //   },

          //   zlevel: 9,

          // },

        ],

      };

      return option;
      // ————————————————

      //             版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

      // 原文链接:https://blog.csdn.net/m0_50478723/article/details/132599130
    }




    // 获取整个 URL
    // var url = window.location.href;

    // // 获取 URL 中的参数部分
    // var params = window.location.search;

    // // 示例用法
    // var sceneId = getParamValue('sceneId');


    function arraySum(arr) {
      let sum = 0;
      for (let i = 0; i < arr.length; i++) {
        sum += (arr[i] == '' ? 0 : arr[i]);
      }
      return sum;
    }

    /**
      * 获取指定参数的值
      **/
    function getParamValue(param) {
      var query = window.location.search.substr(1);
      var paramArr = query.split('&');
      for (var i = 0; i < paramArr.length; i++) {
        var pair = paramArr[i].split('=');
        if (pair[0] === param) {
          return decodeURIComponent(pair[1]);
        }
      }
      return null;
    }

  </script>

</body>

</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1434716.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mysql索引优化建议

1&#xff0c;最左前缀法则 如果为一张表创建了多列的组合索引&#xff0c;要遵守最左前缀法则。就是指查询从索引的最左前列开始并且不要跳过索引中的列。&#xff08;因为Mysql的InnoDB引擎的索引树是一个按顺利排序存储的数据结构&#xff08;BTREE&#xff09;&#xff0c…

SQLserver2008 r2 下载安装配置、使用、新建登录用户及通过Navicat远程连接

目录 一、下载 二、安装配置 1.安装 2.许可条款 3.安装程序支持文件 4.功能选择 5.实例配置 6.服务器配置 7.数据库引擎配置 8.Reporting Services 配置 9.安装进度 ​编辑 10.完成 三、使用 四、新建登录用户 1.新建登录名 2.常规 3.服务器角色 4. 用户映…

[鹤城杯 2021]easy_crypto

下载一看发现是核心价值观编码 核心价值观编码

Seata下载与配置、启动

目录 Seata下载Seata配置启动Seata Seata下载 首先&#xff0c;我们需要知道我们要使用哪个版本的seata&#xff0c;这就要查看spring-cloud-alibaba版本说明&#xff0c;找到我们对应的seata。 spring-cloud-alibaba版本说明: 地址链接 下面是部分版本说明&#xff1a; s…

【go】延迟执行和定时器实现

目录 time.Sleep time.After time.NewTimer time.NewTicker time.Sleep time.Sleep可以实现延时执行 func TestSleep(t *testing.T) {fmt.Println("start time:", time.Now().Format("2006-01-02 15:04:05.000"))time.Sleep(2 * time.Second)fmt.Pri…

蓝桥杯每日一题----第k个数

题目&#xff1a;第k个数 主要为了学习数字的构造方法&#xff0c;如何快速求1~n中前缀为pre的数字的个数。 题目分析 一开始想的是把数字转化为字符串&#xff0c;然后丢给sort排序就行了&#xff0c;但是n太大了&#xff0c;会出现溢出问题。走到这里也从侧面反映了对所有…

DBeaver添加阿里maven镜像

1、点击数据库->驱动管理器 2、选择任意数据库&#xff0c;点击编辑按钮 3、点击下载/更新(D) 4、点击下载配置 5、点击添加 6、添加阿里云地址 http://maven.aliyun.com/nexus/content/groups/public/ 7、将阿里云地址移动到首位并点击"应用并关闭"

【亿级数据专题】「高并发架构」盘点本年度探索对外服务的百万请求量的API网关设计实现

盘点本年度探索对外服务的百万请求量的API网关设计实现 背景介绍高性能API网关API网关架构优化多级缓存架构设计多级缓存富客户端漏斗模型数据读取架构 异步刷新过期缓存网关异步化调用模型高性能批量API调用&#xff08;减少对于网关的交互和通信&#xff09;并行调用和请求合…

使用PHPStudy搭建本地web网站并实现任意浏览器公网访问

文章目录 [toc]使用工具1. 本地搭建web网站1.1 下载phpstudy后解压并安装1.2 打开默认站点&#xff0c;测试1.3 下载静态演示站点1.4 打开站点根目录1.5 复制演示站点到站网根目录1.6 在浏览器中&#xff0c;查看演示效果。 2. 将本地web网站发布到公网2.1 安装cpolar内网穿透2…

跟着pink老师前端入门教程-day18

3、CSS3 3D转换 生活中的环境是3D的&#xff0c;照片就是3D物体在2D平面呈现的例子 特点&#xff1a;近大远小&#xff0c;物体后面遮挡不可见 3.1 三维坐标系 三维坐标系其实就是指立体空间&#xff0c;立体空间是由3个轴共同组成的 x轴&#xff1a;水平向右 注意&#x…

【字符串】字典树

字典树就是利用一个这样的树状结构&#xff0c;可以记录字符串有没有出现过 放个板子 int nxt[100000][26], cnt; bool st[100000]; // 该结点结尾的字符串是否存在 void insert(string s, int l) // 插入字符串&#xff0c;l是字符串长度 { int p 0;for (int i 0; i < …

QT Linux下无法使用CTRL+ALT+P快捷键,不生效

文章目录 一、背景二、排查&#xff08;1&#xff09;检查创建&#xff0c;发现没问题。&#xff08;2&#xff09;查看 shortcutMap 是否注册&#xff08;3&#xff09;排查xcb有没有获取到该事件&#xff08;4&#xff09;排查是否是系统的问题&#xff08;5&#xff09;www.…

Android meminfo 查看方法及解析

目录 Android 上查看memory 信息的方法 内存限制的信息 手动释放缓存 例 adb shell dumpsys meminfo pid 解析 adb shell dumpsys meminfo 汇总信息说明 Total RAM Free RAM ION Used RAM Lost RAM ZRAM /proc/meminfo 参考文档 Android 上查看memory 信息的方法 …

JS第一天、数据类型检测、内存释放

复习&#xff1a; 以下类型都是 object console.log(typeof new Object); console.log(typeof new Array()); console.log(typeof new Date()); console.log(typeof new RegExp()); console.log(typeof new String()); console.log(typeof new Number()); console.log(typeof…

Leetcode—2670. 找出不同元素数目差数组【简单】

2024每日刷题&#xff08;一零七&#xff09; Leetcode—2670. 找出不同元素数目差数组 哈希表实现代码 class Solution { public:vector<int> distinctDifferenceArray(vector<int>& nums) {unordered_set<int> s;int n nums.size();vector<int&g…

跨越视觉-语言界限:BLIP的多任务精细处理策略

BLIP 核心思想MED架构和CapFilt方法效果 总结CLIP模型 VS BLIP模型CLIP模型BLIP模型 核心思想 论文&#xff1a;https://proceedings.mlr.press/v162/li22n/li22n.pdf 代码&#xff1a;https://github.com/salesforce/BLIP BLIP&#xff08;Bootstrapping Language-Image Pre…

重生奇迹MU如何挂机

1、重生奇迹MU觉醒哪里挂机经验多挂机收益最大化&#xff0c;在重生奇迹MU中玩家可以通过副本获得大量的经验和金币&#xff0c;甚至挂机也有不错的收益&#xff0c;对于玩家来说 2、卡利玛神庙、血色城堡、迷失之城、恶魔广场甚至是挂机自动刷怪&#xff0c;组队都会有经验加…

linux安装naocs

一.安装jdk 二.安装nacos 1.下载nacos Releases alibaba/nacos GitHub 2.上传到服务器 3.解压nacos tar -zxvf nacos-server-2.3.0.tar.gz 会生成一个nacos文件夹 4.启动nacos 进入nacos/bin目录 cd nacos/bin 启动 ./startup.sh -m standalone 5.访问 http://…

【网络安全】2024年暗网威胁分析及发展预测

暗网因其非法活动而臭名昭著&#xff0c;现已发展成为一个用于各种非法目的的地下网络市场。 它是网络犯罪分子的中心&#xff0c;为被盗数据交易、黑客服务和邪恶活动合作提供了机会。为了帮助企业组织更好地了解暗网发展形势&#xff0c;近日&#xff0c;卡巴斯基的安全研究…

HarmonyOS远程真机调试方法

生成密钥库文件 打开DevEco Studio&#xff0c;点击菜单栏上的build&#xff0c; 填一些信息点击&#xff0c;没有key的话点击new一个新的key。 生成profile文件 AppGallery Connect (huawei.com) 进入该链接网站&#xff0c;点击用户与访问将刚生成的csr证书提交上去其中需…