echarts制作grafana 面板之折线图

最近有需求需要制作grafana 来实现自己的需求,于是开始研究

实现效果如下

实现代码

javascript 复制代码
import * as echarts from 'echarts';

var chartDom = document.getElementById('main');
var myChart = echarts.init(chartDom, 'dark');
var option;

function getLast30Days() {
  let dates = [];
  let today = new Date();

  for (let i = 0; i < 30; i++) {
    let date = new Date();
    date.setDate(today.getDate() - i);
    let month = date.getMonth() + 1; // 月份是从0开始的,所以需要加1
    let day = date.getDate();
    dates.push(`${month}/${day}`);
  }

  return dates.reverse(); // 反转数组以使日期从过去到现在排列
}
option = {
  title: {
    text: '脏数据展示面板',
    subtext: '这是副标题',
    sublink: 'https://github.com/ecomfe/echarts-stat',
    left: 'center'
  },
  backgroundColor: '#181b1f',
  tooltip: {
    trigger: 'axis',
    backgroundColor: '#181b1f',
    borderWidth: 0,
    padding: 0,
    textStyle: {
      color: 'rgba(255,255,255,0.7)'
    },
    formatter: function (params) {
      // 自定义符号样式,可以使用 HTML 标签来实现
      var content = `<div style="border:1px solid rgba(255,255,255,0.2);border-radius:4px"><div style="padding: 3px 8px;border-bottom:1px solid rgba(255,255,255,0.2)">${params[0].axisValue}</div><div style="padding:3px 8px;display:flex;align-items:center"><span style="display:inline-block;width:15px;height:4px; margin-right:5px;background-color:#73bf69;border-radius:4px"></span><span>${params[0].seriesName}</span><span style="margin-left:20px">${params[0].value}</span></div></div>`;
      return content;
    },
    axisPointer: {
      type: 'cross',
      lineStyle: {
        opacity: 0.5
      },
      crossStyle: {
        opacity: 0.5
      },
      label: {
        show: false
      }
    }
  },
  legend: {
    show: true,
    itemHeight: 4,
    itemWidth: 15,
    icon: 'rect',
    data: ['脏数据'],
    bottom: 'bottom'
  },

  xAxis: {
    type: 'category',
    boundaryGap: false, //设置从坐标轴开始显示
    axisLine: {
      show: false
    },
    axisTick: {
      show: false
    },
    splitLine: {
      show: true
    },

    data: getLast30Days(),
    minorSplitLine: {
      show: true
    }
  },
  yAxis: {
    type: 'value',
    splitLine: {
      show: true,
      lineStyle: {
        join: 'miterLimit',
        miterLimit: 10
      }
    },
    //次分割线
    minorSplitLine: {
      show: false,
      lineStyle: {
        color: '#ffffff',
        opacity: 1
      }
    }
  },
  //显示渐变线条
  //   visualMap: [
  //   {
  //     show: false,
  //     type: 'continuous',
  //     seriesIndex: 0,
  //     min: 0,
  //     max: 60,
  //     inRange: {
  //           color: ['#73bf69', 'rgba(115,191,105,.4)', '#73bf69'],
  //           symbolSize: [50, 20]
  //       }
  //   },

  // ],
  series: [
    {
      data: [
        10, 20, 24, 18, 28, 30, 20, 28, 30, 24, 20, 16, 27, 20, 10, 20, 24, 18,
        28, 30, 20, 28, 30, 24, 20, 16, 27, 20, 20, 28
      ],
      name: '脏数据',
      type: 'line',
      smooth: false, //设置平滑曲线
      showSymbol: false, //设置是否显示折现顶点的图标
      lineStyle: {
        color: '#73bf69',
        width: 1
      },
      itemStyle: {
        color: '#73bf69'
      },
      areaStyle: {
        color: '#73bf69',
        opacity: 0.1
      } //填充背景
    }
  ]
};

option && myChart.setOption(option);
相关推荐
军军君011 分钟前
基于Springboot+UniApp+Ai实现模拟面试小工具二:后端项目搭建
前端·javascript·spring boot·spring·微信小程序·前端框架·集成学习
quweiie41 分钟前
tp8.0\jwt接口安全验证
前端·安全·jwt·thinkphp
xiaoyan20151 小时前
最新Flutter3.32+Dart3仿微信App聊天实例
前端·flutter·dart
汪敏wangmin1 小时前
Fiddler-抓包后直接生成Loadrunner脚本或者Jmeter脚本
前端·jmeter·fiddler
彤银浦2 小时前
Web学习笔记3
前端·笔记·学习·html5
江城开朗的豌豆2 小时前
退出登录后头像还在?这个缓存问题坑过多少前端!
前端·javascript·vue.js
江城开朗的豌豆2 小时前
Vue的'读心术':它怎么知道数据偷偷变了?
前端·javascript·vue.js
江城开朗的豌豆2 小时前
手把手教你造一个自己的v-model:原来双向绑定这么简单!
前端·javascript·vue.js
我在北京coding2 小时前
el-tree 懒加载 loadNode
前端·vue.js·elementui
江城开朗的豌豆3 小时前
v-for中key值的作用:为什么我总被要求加这个'没用的'属性?
前端·javascript·vue.js