echarts 统计图 x 轴实现拉伸滑动

效果图

核心代码

dataZoom: [{
  type: "slider", // 滑动条型数据区域缩放组件
  show: true, // 是否显示组件(用于 x 轴使用)
  start: 70, // 数据窗口范围的起始百分比(范围是:0 ~ 100。表示 0% ~ 100%)
  end: 100, // 数据窗口范围的结束百分比(范围是:0 ~ 100。表示 0% ~ 100%)
  height: 30, // 组件的高度(水平布局默认 30,竖直布局默认自适应)
  handleSize: '30%', // 控制手柄的尺寸,可以是像素大小,也可以是相对于 dataZoom 组件宽度的百分比,默认跟 dataZoom 宽度相同
  handleStyle: {
    // color: '#fff', // 图形的颜色
    // borderColor: 'red', // 图形的描边颜色
    // borderWidth: 1, // 描边线宽。为 0 时无描边
    borderType: 'solid' // 描边类型 solid.实线(默认) dashed.虚线 dotted.点虚线
  }, // 两侧缩放手柄的样式配置
  showDataShadow: false, // 是否在 dataZoom-silder 组件中显示数据阴影。数据阴影可以简单地反应数据走势
}, {
  type: "inside", // 内置型数据区域缩放组件(即在坐标系内平移与缩放)
  start: 70, // 数据窗口范围的起始百分比(范围是:0 ~ 100。表示 0% ~ 100%)
  end: 100 // 数据窗口范围的结束百分比(范围是:0 ~ 100。表示 0% ~ 100%)
}, {
  type: "slider", // 滑动条型数据区域缩放组件
  show: false, // 是否显示组件(用于 y 轴使用)
  width: "5%", // 组件的宽度(竖直布局默认 30,水平布局默认自适应)
  height: "70%", // 组件的高度(水平布局默认 30,竖直布局默认自适应)
  yAxisIndex: 0, // 组件控制的 y 轴(即下方 yAxis 数组的索引值)
  filterMode: "empty", // none.不过滤数据只改变数轴范围 empty.当前数据窗口外的数据设置为空,不影响其他轴的数据范围 其他访问https://echarts.apache.org/zh/option.html#dataZoom-slider.filterMode
  handleSize: '30%', // 控制手柄的尺寸,可以是像素大小,也可以是相对于 dataZoom 组件宽度的百分比,默认跟 dataZoom 宽度相同
  handleStyle: {
    // color: '#fff', // 图形的颜色
    // borderColor: 'red', // 图形的描边颜色
    // borderWidth: 1, // 描边线宽。为 0 时无描边
    borderType: 'solid' // 描边类型 solid.实线(默认) dashed.虚线 dotted.点虚线
  }, // 两侧缩放手柄的样式配置
  showDataShadow: false, // 是否在 dataZoom-silder 组件中显示数据阴影。数据阴影可以简单地反应数据走势
  left: "93%" // 组件离容器左侧的距离
}], // 区域缩放

完整代码

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>eCharts 统计图 x 轴实现拉伸滑动</title>
    <script src="https://cdn.bootcss.com/echarts/4.2.1-rc1/echarts.min.js" type="text/javascript"></script>
  </head>
  <body>
    <div id="mainDiv" style="height: 400px; width: 500px"></div>
    <script>
      const arr = [{
        "x": "2022/10/10",
        "y": "10"
      }, {
        "x": "2022/10/11",
        "y": "20"
      }, {
        "x": "2022/10/12",
        "y": "30"
      }, {
        "x": "2022/10/13",
        "y": "40"
      }, {
        "x": "2022/10/14",
        "y": "50"
      }, {
        "x": "2022/10/15",
        "y": "60"
      }, {
        "x": "2022/10/16",
        "y": "70"
      }, {
        "x": "2022/10/17",
        "y": "80"
      }, {
        "x": "2022/10/18",
        "y": "90"
      }, {
        "x": "2022/10/19",
        "y": "100"
      }, {
        "x": "2022/10/20",
        "y": "110"
      }]
      const names = []; // 类别数组(实际用来盛放X轴坐标值)
      const seriesData = [];
      arr.forEach(item => {
        names.push(item.x);
        seriesData.push(item.y);
      })
      drawFun(names, seriesData);

      function drawFun(x_data, y_data) {
        const eChart = echarts.init(document.getElementById('mainDiv')); // 初始化 echarts 实例
        eChart.setOption({
          color: ['#2ec7c9'], // 调色盘颜色列表
          legend: {
            show: true, // 是否显示图例组件
            left: 120, // 图例组件离容器左侧的距离(值为 left,center,right 组件会根据相应的位置自动对齐)
            top: 20, // 图例组件离容器上侧的距离(值为top,middle,bottom 组件会根据相应的位置自动对齐)
            data: ['val值'], // 图例的数据数组
            icon: 'roundRect', // 图例项的图标 circle.圆 rect.矩形 roundRect.圆角矩形 triangle.三角形 diamond.菱形 pin.钉 arrow.箭头 none.无
            textStyle: {
              color: 'red', // 文字的颜色
              fontSize: 12, // 字体大小
              fontStyle: 'normal', // 字体风格 normal.标准(默认) talic oblique.斜的
              fontWeight: 'normal' // 字体粗细
            } // 图例的公用文本样式
          }, // 图例组件
          tooltip: {
            trigger: 'axis', // 触发类型 item.数据项图形触发(主要在散点图) axis.坐标轴触发(主要在柱状图) none.什么都不触发
            axisPointer: {
              type: 'shadow' // 指示器类型 line.直线指示器 shadow.阴影指示器 none.无指示器 cross.十字准星指示器
            } // 坐标轴指示器配置项
          }, // 提示框组件
          grid: {
            show: true, // 是否显示直角坐标系网格
            left: '3%', // grid 组件离容器左侧的距离(值为 left,center,right 组件会根据相应的位置自动对齐)
            right: '4%', // grid 组件离容器右侧的距离
            bottom: '5%', // grid 组件离容器下侧的距离
            containLabel: true // grid 区域是否包含坐标轴的刻度标签
          }, // 直角坐标系网格
          dataZoom: [{
            type: "slider", // 滑动条型数据区域缩放组件
            show: true, // 是否显示组件(用于 x 轴使用)
            start: 70, // 数据窗口范围的起始百分比(范围是:0 ~ 100。表示 0% ~ 100%)
            end: 100, // 数据窗口范围的结束百分比(范围是:0 ~ 100。表示 0% ~ 100%)
            height: 30, // 组件的高度(水平布局默认 30,竖直布局默认自适应)
            handleSize: '30%', // 控制手柄的尺寸,可以是像素大小,也可以是相对于 dataZoom 组件宽度的百分比,默认跟 dataZoom 宽度相同
            handleStyle: {
              // color: '#fff', // 图形的颜色
              // borderColor: 'red', // 图形的描边颜色
              // borderWidth: 1, // 描边线宽。为 0 时无描边
              borderType: 'solid' // 描边类型 solid.实线(默认) dashed.虚线 dotted.点虚线
            }, // 两侧缩放手柄的样式配置
            showDataShadow: false, // 是否在 dataZoom-silder 组件中显示数据阴影。数据阴影可以简单地反应数据走势
          }, {
            type: "inside", // 内置型数据区域缩放组件(即在坐标系内平移与缩放)
            start: 70, // 数据窗口范围的起始百分比(范围是:0 ~ 100。表示 0% ~ 100%)
            end: 100 // 数据窗口范围的结束百分比(范围是:0 ~ 100。表示 0% ~ 100%)
          }, {
            type: "slider", // 滑动条型数据区域缩放组件
            show: false, // 是否显示组件(用于 y 轴使用)
            width: "5%", // 组件的宽度(竖直布局默认 30,水平布局默认自适应)
            height: "70%", // 组件的高度(水平布局默认 30,竖直布局默认自适应)
            yAxisIndex: 0, // 组件控制的 y 轴(即下方 yAxis 数组的索引值)
            filterMode: "empty", // none.不过滤数据只改变数轴范围 empty.当前数据窗口外的数据设置为空,不影响其他轴的数据范围 其他访问https://echarts.apache.org/zh/option.html#dataZoom-slider.filterMode
            handleSize: '30%', // 控制手柄的尺寸,可以是像素大小,也可以是相对于 dataZoom 组件宽度的百分比,默认跟 dataZoom 宽度相同
            handleStyle: {
              // color: '#fff', // 图形的颜色
              // borderColor: 'red', // 图形的描边颜色
              // borderWidth: 1, // 描边线宽。为 0 时无描边
              borderType: 'solid' // 描边类型 solid.实线(默认) dashed.虚线 dotted.点虚线
            }, // 两侧缩放手柄的样式配置
            showDataShadow: false, // 是否在 dataZoom-silder 组件中显示数据阴影。数据阴影可以简单地反应数据走势
            left: "93%" // 组件离容器左侧的距离
          }], // 区域缩放
          xAxis: [{
            show: true, // 是否显示 x 轴
            // name: 'x坐标轴名称', // 坐标轴名称
            nameLocation: 'center', // 坐标轴名称的显示位置 start.开始 center.中心 end.末端(默认)
            nameTextStyle: {
              color: '#000', // 字体颜色(默认取 axisLine.lineStyle.color)
              fontSize: 12, // 字体大小
              padding: 0, // 文字块的内边距
              fontStyle: 'normal', // 字体风格 normal.标准(默认) talic oblique.斜的
              fontWeight: 'normal' // 字体粗细
            }, // 坐标轴名称的文字样式
            type: 'category', // 坐标轴类型 value.数值轴(适用于连续数据) category.类目轴(适用于离散的类目数据) time.时间轴(适用于连续的时序数据) log.对数轴(适用于对数数据)
            data: x_data, // 类目数据(类目轴[type: 'category']中有效) 如果没有设置 type,但是设置了 axis.data,则认为 type 是 'category'。如果设置了 type 是 'category',但没有设置 axis.data,则 axis.data 的内容会自动从 series.data 中获取
            axisLine: {
              show: true, // 是否显示坐标轴轴线
              lineStyle: {
                type: 'solid', // 线的类型 solid.实线(默认) dashed.虚线 dotted.点虚线
                color: 'red', // 线的颜色
                width: 1, // 坐标轴线线宽
              } // 坐标轴线的样式
            }, // 坐标轴轴线相关设置
            axisTick: {
              show: true, // 是否显示坐标轴刻度
              length: 5, // 坐标轴刻度的长度
              inside: false, // 坐标轴刻度是否朝内 true.朝内 false.朝外(默认)
              alignWithLabel: true // 保证刻度线和标签对齐(类目轴中在 boundaryGap 为 true 的时候有效)
            }, // 坐标轴刻度相关设置
            axisLabel: {
              show: true, // 是否显示刻度标签
              interval: 0, // 坐标轴刻度标签的显示间隔(类目轴中有效) 0.强制显示所有标签 1.隔一个标签显示 2.隔两个标签显示,以此类推
              textStyle: {
                color: 'red', // 字体颜色
                fontSize: 12 // 字体大小
              }, // 标签文字样式
              inside: false, // 坐标轴刻度是否朝内 true.朝内 false.朝外(默认)
              rotate: 0, // 刻度标签旋转的角度(可防止标签之间重叠)
              margin: 8, // 刻度标签与轴线之间的距离
              // formatter: function(nal) {
              // 	const str = nal.split("");
              // 	return str.join("\n");
              // } // 文字改为竖版显示
            } // 坐标轴刻度标签的相关设置
          }],
          yAxis: [{
            show: true, // 是否显示 y 轴
            // name: 'y坐标轴名称', // 坐标轴名称
            nameLocation: 'end', // 坐标轴名称的显示位置 start.开始 center.中心 end.末端(默认)
            nameTextStyle: {
              color: '#000', // 字体颜色(默认取 axisLine.lineStyle.color)
              fontSize: 12, // 字体大小
              padding: 0, // 文字块的内边距
              fontStyle: 'normal', // 字体风格 normal.标准(默认) talic oblique.斜的
              fontWeight: 'normal' // 字体粗细
            }, // 坐标轴名称的文字样式
            type: 'value', // 坐标轴类型 value.数值轴(适用于连续数据) category.类目轴(适用于离散的类目数据) time.时间轴(适用于连续的时序数据) log.对数轴(适用于对数数据)
            axisLine: {
              show: true, // 是否显示坐标轴轴线
              lineStyle: {
                type: 'solid', // 线的类型 solid.实线(默认) dashed.虚线 dotted.点虚线
                color: 'red', // 线的颜色
                width: 1, // 坐标轴线线宽
              } // 坐标轴线的样式
            }, // 坐标轴轴线相关设置
            axisTick: {
              show: true, // 是否显示坐标轴刻度
              length: 5, // 坐标轴刻度的长度
              inside: false // 坐标轴刻度是否朝内 true.朝内 false.朝外(默认)
            }, // 坐标轴刻度相关设置
            axisLabel: {
              show: true, // 是否显示刻度标签
              textStyle: {
                color: 'red', // 字体颜色
                fontSize: 12 // 字体大小
              }, // 标签文字样式
              inside: false, // 坐标轴刻度是否朝内 true.朝内 false.朝外(默认)
              rotate: 0, // 刻度标签旋转的角度(可防止标签之间重叠)
              margin: 8 // 刻度标签与轴线之间的距离
            }, // 坐标轴刻度标签的相关设置
            splitLine: {
              show: false // 是否显示分隔线。默认数值轴显示,类目轴不显示(true)
            } // 坐标轴在 grid 区域中的分隔线
          }],
          series: [{
            name: 'val值', // 系列名称,用于 tooltip 的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列
            type: 'bar', // 柱状图(或条形图)
            barWidth: '30%', // 柱条的宽度,不设时自适应
            data: y_data // 系列中的数据内容数组
          }]
        });
      }
    </script>
  </body>
</html>
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值