echart 制作 Grafana 面板之仪表盘

目录

前言

Grafana 是一个开源的可视化监控工具,支持多种数据源,并且可以创建丰富的仪表盘。ECharts 是一个强大的开源数据可视化库,通过结合这两者,我们可以创建自定义的仪表盘,以满足特定的需求。本文将介绍如何使用 ECharts 创建一个 Grafana 面板的仪表盘。

准备工作

在开始之前,请确保你已经安装了以下内容:

  1. Node.js
  2. 一个前端项目(可以使用 Vue, React, 或纯 HTML 文件)

安装 ECharts:

bash 复制代码
npm install echarts

实现代码

创建一个 HTML 文件并添加以下代码:

html 复制代码
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>ECharts 仪表盘</title>
  <script src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script>
</head>
<body>
  <div id="main" style="width: 600px; height: 400px;"></div>
  <script>
    var chartDom = document.getElementById('main');
    var myChart = echarts.init(chartDom, 'dark');
    var option;

    option = {
       backgroundColor: '#181b1f',
      series: [
        {
          type: 'gauge',
          center: ['50%', '60%'],
          startAngle: 200,
          endAngle: -20,
          min: 0,
          max: 60,
          splitNumber: 12,
          itemStyle: {
            color: '#FFAB91'
          },
          progress: {
            show: true,
            width: 50,
            itemStyle: {
              color: '#73bf69'
            }
          },
          pointer: {
            show: false
          },
          axisLine: {
            lineStyle: {
              width: 50
            }
          },
          axisTick: {
            show: false
          },
          splitLine: {
            show: false
          },
          axisLabel: {
            show: false
          },
          anchor: {
            show: false
          },
          title: {
            show: false
          },
          detail: {
            valueAnimation: true,
            width: '60%',
            lineHeight: 0,
            borderRadius: 8,
            offsetCenter: [0, '20%'],
            fontSize: 90,
            fontWeight: 'bolder',
            formatter: '{value}',
            color: '#73bf69'
          },
          data: [
            {
              value: 10
            }
          ]
        },
        {
          type: 'gauge',
          center: ['50%', '60%'],
          radius: '78%',
          startAngle: 200,
          endAngle: -20,
          min: 0,
          max: 60,
          itemStyle: {
            color: '#FD7347'
          },
          progress: {
            show: true,
            width: 8,
            itemStyle: {
              color: '#73bf69'
            }
          },
          pointer: {
            show: false
          },
          axisLine: {
            show: false
          },
          axisTick: {
            show: false
          },
          splitLine: {
            show: false
          },
          axisLabel: {
            show: false
          },
          detail: {
            show: false
          },
          data: [
            {
              value: 100
            }
          ]
        }
      ]
    };

    option && myChart.setOption(option);
  </script>
</body>
</html>

代码详解

以下是代码的详细解释:

初始化 ECharts

首先,我们需要获取要渲染图表的 DOM 元素,并使用 echarts.init 方法初始化 ECharts 实例。

javascript 复制代码
var chartDom = document.getElementById('main');
var myChart = echarts.init(chartDom, 'dark');

配置选项

接下来,我们定义了一个 option 对象,其中包含了两个仪表盘配置:

javascript 复制代码
option = {
   backgroundColor: '#181b1f',
  series: [
    {
      type: 'gauge',
      center: ['50%', '60%'],
      startAngle: 200,
      endAngle: -20,
      min: 0,
      max: 60,
      splitNumber: 12,
      itemStyle: {
        color: '#FFAB91'
      },
      progress: {
        show: true,
        width: 50,
        itemStyle: {
          color: '#73bf69'
        }
      },
      pointer: {
        show: false
      },
      axisLine: {
        lineStyle: {
          width: 50
        }
      },
      axisTick: {
        show: false
      },
      splitLine: {
        show: false
      },
      axisLabel: {
        show: false
      },
      anchor: {
        show: false
      },
      title: {
        show: false
      },
      detail: {
        valueAnimation: true,
        width: '60%',
        lineHeight: 0,
        borderRadius: 8,
        offsetCenter: [0, '20%'],
        fontSize: 90,
        fontWeight: 'bolder',
        formatter: '{value}',
        color: '#73bf69'
      },
      data: [
        {
          value: 10
        }
      ]
    },
    {
      type: 'gauge',
      center: ['50%', '60%'],
      radius: '78%',
      startAngle: 200,
      endAngle: -20,
      min: 0,
      max: 60,
      itemStyle: {
        color: '#FD7347'
      },
      progress: {
        show: true,
        width: 8,
        itemStyle: {
          color: '#73bf69'
        }
      },
      pointer: {
        show: false
      },
      axisLine: {
        show: false
      },
      axisTick: {
        show: false
      },
      splitLine: {
        show: false
      },
      axisLabel: {
        show: false
      },
      detail: {
        show: false
      },
      data: [
        {
          value: 100
        }
      ]
    }
  ]
};

渲染图表

最后,我们使用 setOption 方法将配置应用到图表实例中:

javascript 复制代码
option && myChart.setOption(option);

总结

通过以上步骤,我们成功使用 ECharts 创建了一个 Grafana 风格的仪表盘。ECharts 提供了丰富的图表类型和灵活的配置选项,可以轻松实现各种复杂的图表需求。在实际项目中,可以根据需要调整配置选项,创建更加复杂和美观的仪表盘。

相关阅读

相关推荐
ℋᙚᵐⁱᒻᵉ鲸落17 小时前
移动端滑动手势冲突:overflow: auto导致外层横向滑动失效
前端·javascript·css·vue.js·html
默_笙18 小时前
🎃 前端学了 Next.js,后端该学啥?NestJS 就是 Node 版的蜜雪冰城
前端·javascript
DevOps老兵18 小时前
AI Infra实战02:GPU监控实战,用DCGM+Prometheus+Grafana看清每一张卡
人工智能·grafana·prometheus·ai infra·gpu监控·dcgm
qq_4523962319 小时前
第二篇:《LGTM 栈全景:Loki、Grafana、Tempo、Mimir 的协同作战》
grafana
前端snow19 小时前
ai agent --- 实现 openclaw 定时间效果
前端
码云之上19 小时前
换模型之后,Chatbot 为什么要自己做 compact?
前端·agent·前端工程化
星栈20 小时前
自定义 UI-UX-Pro-Max 的 CSV 知识库,把 AI 生成的后台拉回行业该有的样子
前端·agent·weui
研☆香20 小时前
简单的图片上传 删除 预览
前端
ITresearchGuest20 小时前
我用 AI 一小时写了一个世界杯数据可视化平台|前端 VibeCoding 初体验
前端·人工智能·信息可视化
慧一居士21 小时前
Vite项目中使用Less步骤,详细使用示例
前端·css