vue中使用echarts做一个基础可滚动的折线图及dataZoom滚动配置项

需求背景

在项目开发中有的页面会要求使用图表区显示以往数据  但时间跨度很大  数据比较多  若展示一个月的话  每天对应一组数据  那就是30条左右  全部堆积到图表上会密密麻麻的  这使用有几种解决方式  要么设置时间范围  要么就给图表加入滚动条

样例展示

这是没有设置初始范围时页面的效果  可拖拽也可左右控制时间范围  但是对于我们需求背景这种情况  初始要控制一个显示范围  不然全部显示的话  有点违背之前提出堆积的情况

这是设置了初始范围页面展示的效果

option配置

const option= ref({
  xAxis: {
    type: 'category',
    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] // 确保数据长度匹配
  },
  yAxis: {
    type: 'value'
  },
  tooltip: {
    trigger: 'axis' //鼠标放入提示
  },
  grid: {
    left: 40,//为了控制图表左右空白占位去设置
    right: 40,
    top: 20,
    bottom: 70,
  },
  series: [
    {
      data: [150, 230, 224, 218, 135, 147, 260], // 确保数据长度匹配
      type: 'line'
    }
  ],
  dataZoom: [
    {
      type: 'slider', // 外部滚动条
      xAxisIndex: 0,
      start: 0, // 0% 位置,即第一个数据点
      end: 10 // 初始展示10%的数据
    },
    {
      type: 'inside', // 内置滚动条
      xAxisIndex: 0,
      start: 0,
      end: 10 // 与 slider 相同,确保内部和外部缩放条同步
    }
  ]
});

部分实用dataZoom配置

  • type: 指定 dataZoom 的类型,可以是 'slider'(带滑动条的缩放组件)或 'inside'(内置型缩放组件,即鼠标滚轮缩放和平移)。
  • xAxisIndex / yAxisIndex: 指定 dataZoom 控制的坐标轴索引,可以是单个索引值或索引数组,如果是 number 表示控制一个轴,如果是 Array 表示控制多个轴。。
  • start: 表示数据窗口在当前数据区域中的起始百分比。
  • end: 表示数据窗口在当前数据区域中的结束百分比。
  • minSpan / maxSpan: 分别表示窗口的最小和最大跨度,用于限制用户缩放的范围。
  • filterMode: 指定过滤数据的模式,对于类目轴(type: 'category')有效,可以是 'filter'(只保留窗口内的数据)或 'empty'(窗口外的数据设置为空)。
  • show: 是否显示 dataZoom 组件。
  • height / width / bottom / top / left / right: 这些属性用于控制 dataZoom 组件的位置和大小。
  • showDetail: //是否显示detail,即拖拽时候显示详细数值信息

好的,以下是一个基于 Vue3 和 Echarts 的双 y 轴折线图实现: 1. 首先安装 Echarts: ``` npm install echarts --save ``` 2. 在 Vue3 组件中引入 Echarts: ```javascript import * as echarts from 'echarts' ``` 3. 在 Vue3 组件中定义数据和配置项并初始化 Echarts: ```javascript <template> <div class="chart-container"> <div ref="chart" class="chart"></div> </div> </template> <script> export default { name: 'DoubleLineChart', data() { return { chartData: { xAxis: { type: 'category', data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] }, yAxis: [ { type: 'value', name: 'y1' }, { type: 'value', name: 'y2' } ], series: [ { name: 'y1', type: 'line', data: [820, 932, 901, 934, 1290, 1330, 1320], yAxisIndex: 0 }, { name: 'y2', type: 'line', data: [10, 20, 30, 40, 50, 60, 70], yAxisIndex: 1 } ] } } }, mounted() { this.chart = echarts.init(this.$refs.chart) this.chart.setOption(this.chartData) } } </script> <style> .chart-container { width: 100%; height: 100%; display: flex; justify-content: center; align-items: center; } .chart { width: 600px; height: 400px; } </style> ``` 4. 在父组件中使用 DoubleLineChart 组件: ```javascript <template> <div class="app"> <DoubleLineChart /> </div> </template> <script> import DoubleLineChart from './components/DoubleLineChart.vue' export default { name: 'App', components: { DoubleLineChart } } </script> ``` 5. 运行项目,即可看到双 y 轴折线图的效果。 注意:这里的代码只是一个简单的示例,实际使用时需要根据自己的需求进行适当的修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值