echarts 数据区域缩放


echarts 数据区域缩放

                       

官方文档:Documentation - Apache ECharts

                      

                           

*********************

配置属性

                                    

****************

内置型组件(鼠标拖拽、鼠标滚轮、触屏手指滑动实现区域缩放)

          

基本属性

dataZoom.type:缩放组件类型,inside(内置组件)、slider(滑动条)
dataZoom.id:组件id,默认不指定
dataZoom.disabled:是否停止组件功能,默认false

dataZoom.start:数据窗口范围的起始百分比,范围是:0 ~ 100,表示0% ~ 100%
dataZoom.end:数据窗口范围的结束百分比,范围是:0 ~ 100
dataZoom.startValue:数据窗口范围的起始数值,如果设置start,startValue失效
dataZoom.endValue:数据窗口范围的结束数值,如果设置end,endValue失效

dataZoom.minSpan:窗口最小值(百分比),范围是 0 ~ 100,如果设置了minValueSpan,minSpan失效
dataZoom.maxSpan:窗口最大值(百分比),范围是 0 ~ 100
dataZoom.minValueSpan:窗口最小值(实际数值)
dataZoom.maxValueSpan:窗口最大值(实际数值)

dataZoom.orient:布局方式,可选值:horizontal、vertical
dataZoom.zoomLock:是否锁定窗口大小,若为true,则只能平移,不能缩放,默认false
dataZoom.throttle:视图刷新的频率,单位为毫秒(ms),默认100ms

dataZoom.rangeMode:范围模式,可选值value、percent,默认自动设置
如果指定了start、end,rangeMode设为percent
如果指定了startValue、endValue,rangeMode设为value

dataZoom.preventDefaultMouseMove:是否阻止mousemove事件的默认行为,默认true

                

组件控制的坐标轴

dataZoom.xAxisIndex:组件缩放的x轴index,可为多个
dataZoom.yAxisIndex:组件缩放的y轴index,可为多个
dataZoom.radiusAxisIndex:缩放组件控制的radius轴,可为多个
dataZoom.angleAxisIndex:缩放组件控制的angle轴,可为多个

# 示例
option: {
    xAxis: [
        {...}, // 第一个xAxis
        {...}, // 第二个xAxis
        {...}, // 第三个xAxis
        {...}  // 第四个xAxis
    ],
    dataZoom: [
        { // 第一个dataZoom组件
            xAxisIndex: [0, 2] //dataZoom组件控制第一个和第三个xAxis
        },
        { // 第二个dataZoom组件
            xAxisIndex: 3      //dataZoom组件控制第四个xAxis
        }
    ]
}

                  

过滤模式

dataZoom.filterMode:过滤模式,可选值
filter:每个数据项,只要有一个维度(一个数据可能会有多个维度)在数据窗口外,整个数据项就会被过滤掉,会影响其他轴的数据范围
weakFilter:每个数据项,只有当全部维度都在数据窗口同侧外部,整个数据项才会被过滤掉,会影响其他轴的数据范围
empty:当前数据窗口外的数据设置为空,不会影响其他轴的数据范围
none:不过滤数据,只改变本数轴范围,不会影响其他轴的数据范围

# 过滤模式设置(仅供参考),具体需根据需求进行设置
只有x轴或者y轴受缩放组件控制,filterMode设置为filter
x轴、y轴都受缩放组件控制:x轴、y轴互不影响,两个都可设置为empty
x轴、y轴都受缩放组件控制:x轴为主、y轴为辅(如用柱状图展示产品销量,x轴产品,y轴销量),x轴设置为filter,y轴设置为empty

                    

控制区域缩放(鼠标滚动

dataZoom.zoomOnMouseWheel:如何触发缩放,可选值
true:不按任何功能键,鼠标滚轮能触发缩放,默认
false:鼠标滚轮不能触发缩放
shift:按住shift和鼠标滚轮能触发缩放
ctrl:按住ctrl和鼠标滚轮能触发缩放
alt:按住alt和鼠标滚轮能触发缩放

                  

控制窗口平移(鼠标移动

dataZoom.moveOnMouseMove:如何触发数据窗口平移,可选值
true:不按任何功能键,鼠标移动能触发数据窗口平移,默认
false:鼠标移动不能触发平移
shift:按住shift和鼠标移动能触发数据窗口平移
ctrl:按住ctrl和鼠标移动能触发数据窗口平移
alt:按住alt和鼠标移动能触发数据窗口平移

                

控制窗口平移(鼠标滚动

dataZoom.moveOnMouseWheel:如何触发数据窗口平移,可选值
true:不按任何功能键,鼠标滚轮能触发数据窗口平移,默认
false:鼠标滚轮不能触发平移
shift:按住shift和鼠标滚轮能触发数据窗口平移
ctrl:按住ctrl和鼠标滚轮能触发数据窗口平移
alt:按住alt和鼠标滚轮能触发数据窗口平移

                  

****************

滑动条型组件(拖动坐标轴滑条实现区域缩放)

             

基本属性

dataZoom.type:缩放组件类型,inside(内置组件)、slider(滑动条)
dataZoom.id:组件id,默认不指定
dataZoom.show:是否显示,默认true
dataZoom.showDetail:拖拽时候显示详细数值信息,默认true
dataZoom.showDataShadow:是否显示数据阴影,默认auto
dataZoom.realtime:拖动时是否实时更新系列的视图,true(默认):实时更新,false:拖动结束后更新

dataZoom.backgroundColor:组件背景色,如:rgba(47,69,84,0)
dataZoom.fillerColor:选中范围的填充颜色,如:rgba(167,183,204,0.4)
dataZoom.borderColor:边框颜色,如:#ddd

dataZoom.labelPrecision:label的小数精度,默认auto
dataZoom.labelFormatter:label格式化器,可为字符串、函数
#字符串:aaaa{value}bbbb,{value}会被替换为实际的数值
#函数:
labelFormatter: function (value) {  
    return 'aaa' + value + 'bbb';
}  //如果axis.type为category,value为axis.data的index
   //否则value为当前值


dataZoom.start:数据窗口范围的起始百分比,范围是:0 ~ 100,表示0% ~ 100%
dataZoom.end:数据窗口范围的结束百分比,范围是:0 ~ 100
dataZoom.startValue:数据窗口范围的起始数值,如果设置start,startValue失效
dataZoom.endValue:数据窗口范围的结束数值,如果设置end,endValue失效

dataZoom.minSpan:窗口最小值(百分比),范围是 0 ~ 100,如果设置了minValueSpan,minSpan失效
dataZoom.maxSpan:窗口最大值(百分比),范围是 0 ~ 100
dataZoom.minValueSpan:窗口最小值(实际数值)
dataZoom.maxValueSpan:窗口最大值(实际数值)

dataZoom.orient:布局方式,可选值:horizontal、vertical
dataZoom.zoomLock:是否锁定窗口大小,若为true,则只能平移,不能缩放,默认false
dataZoom.throttle:视图刷新的频率,单位为毫秒(ms),默认100ms

dataZoom.rangeMode:范围模式,可选值value、percent,默认自动设置
如果指定了start、end,rangeMode设为percent
如果指定了startValue、endValue,rangeMode设为value

dataZoom.zlevel:图形的zlevel值,用于canvas分层,数值大的放在上面,会创建新的canvas
dataZoom.zz:图形的z值,用于canvas分层,数值大的放在上面,优先级比zlevel低,而且不会创建新的 Canvas

dataZoom.left:组件离容器左侧的距离,可选值:auto(默认)、10、10%、left、center、right等
dataZoom.top:组件离容器上侧的距离,可选值:auto(默认)、10、10%、top、middle、bottom等
dataZoom.right:组件离容器右侧的距离,可选值:auto(默认)、10、10%等
dataZoom.bottom:组件离容器下侧的距离,可选值:auto(默认)、10、10%等

                         

组件控制的坐标轴

dataZoom.xAxisIndex:组件缩放的x轴index,可为多个
dataZoom.yAxisIndex:组件缩放的y轴index,可为多个
dataZoom.radiusAxisIndex:缩放组件控制的radius轴,可为多个
dataZoom.angleAxisIndex:缩放组件控制的angle轴,可为多个

# 示例
option: {
    xAxis: [
        {...}, // 第一个xAxis
        {...}, // 第二个xAxis
        {...}, // 第三个xAxis
        {...}  // 第四个xAxis
    ],
    dataZoom: [
        { // 第一个dataZoom组件
            xAxisIndex: [0, 2] //dataZoom组件控制第一个和第三个xAxis
        },
        { // 第二个dataZoom组件
            xAxisIndex: 3      //dataZoom组件控制第四个xAxis
        }
    ]
}

            

组件过滤模式

dataZoom.filterMode:过滤模式,可选值
filter:每个数据项,只要有一个维度(一个数据可能会有多个维度)在数据窗口外,整个数据项就会被过滤掉,会影响其他轴的数据范围
weakFilter:每个数据项,只有当全部维度都在数据窗口同侧外部,整个数据项才会被过滤掉,会影响其他轴的数据范围
empty:当前数据窗口外的数据设置为空,不会影响其他轴的数据范围
none:不过滤数据,只改变本数轴范围,不会影响其他轴的数据范围

# 过滤模式设置(仅供参考),具体需根据需求进行设置
只有x轴或者y轴受缩放组件控制,filterMode设置为filter
x轴、y轴都受缩放组件控制:x轴、y轴互不影响,两个都可设置为empty
x轴、y轴都受缩放组件控制:x轴为主、y轴为辅(如用柱状图展示产品销量,x轴产品,y轴销量),x轴设置为filter,y轴设置为empty

            

两侧手柄配置:handle

dataZoom.handleIcon:两侧缩放手柄的icon形状,可为:字符串、image://url、path://等
dataZoom.handleSize:手柄尺寸,默认与dataZoom的宽度相同,可为:100%、10(像素大小)

# dataZoom.handleStyle:手柄样式
dataZoom.handleStyle.color:颜色,如:rgb(255,255,255),rgba(255,255,255,1),#fff
dataZoom.handleStyle.borderColor:边框颜色
dataZoom.handleStyle.borderWidth:边框宽度
dataZoom.handleStyle.borderType:边框类型,可选值:solid(默认)、dashed、dotted、5、[5, 10]
dataZoom.handleStyle.borderDashOffset:虚线偏移量,如:5
dataZoom.handleStyle.borderCap:线段末端绘制方式,可选值:butt(方形,默认)、round、square(矩形)
dataZoom.handleStyle.borderJoin:连接属性,可选值:bevel(三角形,默认)、round、miter(菱形)
dataZoom.handleStyle.borderMiterLimit:菱形斜接面比例,默认为10,负数、0、Infinity、NaN均会被忽略
dataZoom.handleStyle.shadowBlur:阴影模糊大小
dataZoom.handleStyle.shadowColor:阴影颜色
dataZoom.handleStyle.shadowOffsetX:阴影水平偏移
dataZoom.handleStyle.shadowOffsetY:阴影垂直偏移
dataZoom.handleStyle.opacity:透明度,默认为1,数值为从0到1的数字(0不显示)

                                     

移动手柄配置:moveHandle

dataZoom.moveHandleIcon:手柄中间的icon,可为:字符串、image://url、path://等
dataZoom.moveHandleSize:移动手柄的尺寸高度,如:7

# dataZoom.moveHandleStyle:移动手柄样式
dataZoom.moveHandleStyle.color:颜色,如:rgb(255,255,255),rgba(255,255,255,1),#fff
dataZoom.moveHandleStyle.borderColor:边框颜色
dataZoom.moveHandleStyle.borderWidth:边框宽度
dataZoom.moveHandleStyle.borderType:边框类型,可选值:solid(默认)、dashed、dotted、5、[5, 10]
dataZoom.moveHandleStyle.borderDashOffset:虚线偏移量,如:5
dataZoom.moveHandleStyle.borderCap:线段末端绘制方式,可选值:butt(方形,默认)、round、square(矩形)
dataZoom.moveHandleStyle.borderJoin:连接属性,可选值:bevel(三角形,默认)、round、miter(菱形)
dataZoom.moveHandleStyle.borderMiterLimit:菱形斜接面比例,默认为10,负数、0、Infinity、NaN均会被忽略
dataZoom.moveHandleStyle.shadowBlur:阴影模糊大小
dataZoom.moveHandleStyle.shadowColor:阴影颜色
dataZoom.moveHandleStyle.shadowOffsetX:阴影水平偏移
dataZoom.moveHandleStyle.shadowOffsetY:阴影垂直偏移
dataZoom.moveHandleStyle.opacity:透明度,默认为1,数值为从0到1的数字(0不显示)

               

文本样式:textStyle

dataZoom.textStyle.color:颜色,如:"#fff"
dataZoom.textStyle.fontStyle:字体风格,可选值:normal、italic、oblique
dataZoom.textStyle.fontWeight:字体粗细,可选值:normal、bold、bolder、lighter、100|200|300|400...
dataZoom.textStyle.fontFamily:字体设置,可选值:sans-serif、serif、monospace、Arial、Courier New、Microsoft YaHei等
dataZoom.textStyle.fontSize:字体大小,如:12

dataZoom.textStyle.width:文本宽度
dataZoom.textStyle.height:文本高度
dataZoom.textStyle.lineHight:行高
 
dataZoom.textStyle.textBorderColor:文本边框颜色
dataZoom.textStyle.textBorderWidth:文本边框宽度
dataZoom.textStyle.textBorderType:文本边框类型,可选值:solid、dashed、dotted、5、[5,10]等
dataZoom.textStyle.textBorderDashOffset:文字虚线偏移量
 
dataZoom.textStyle.textShadowColor:文字阴影颜色
dataZoom.textStyle.textShadowBlur:文字阴影大小
dataZoom.textStyle.textShadowOffsetX:阴影水平偏移
dataZoom.textStyle.textShadowOffsetY:阴影垂直偏移
 
dataZoom.textStyle.overflow:文本超出长度后,是否截断或者换行
none:不截断或者换行,默认
truncate:截断
break:单词间换行
breanAll:除单词间换行,单词内也换行
 
dataZoom.textStyle.ellipsis:文本超出长度,截断(truncate)后显示的文本,如:...

dataZoom.textStyle.lineOverflow:文本超过高度是否截断,配置dataZoom.textStyle.height生效
none:不截断
truncate:截断

             

刷选功能:brush

dataZoom.brushSelect:是否开启刷选功能,默认true

# brushStyle:刷选样式
dataZoom.brushStyle.color:颜色,如:rgb(255,255,255),rgba(255,255,255,1),#fff
dataZoom.brushStyle.borderColor:边框颜色
dataZoom.brushStyle.borderWidth:边框宽度
dataZoom.brushStyle.borderType:边框类型,可选值:solid(默认)、dashed、dotted、5、[5, 10]
dataZoom.brushStyle.borderDashOffset:虚线偏移量,如:5
dataZoom.brushStyle.borderCap:线段末端绘制方式,可选值:butt(方形,默认)、round、square(矩形)
dataZoom.brushStyle.borderJoin:连接属性,可选值:bevel(三角形,默认)、round、miter(菱形)
dataZoom.brushStyle.borderMiterLimit:菱形斜接面比例,默认为10,负数、0、Infinity、NaN均会被忽略
dataZoom.brushStyle.shadowBlur:阴影模糊大小
dataZoom.brushStyle.shadowColor:阴影颜色
dataZoom.brushStyle.shadowOffsetX:阴影水平偏移
dataZoom.brushStyle.shadowOffsetY:阴影垂直偏移
dataZoom.brushStyle.opacity:透明度,默认为1,数值为从0到1的数字(0不显示)

              

高亮样式:emphasis

# handleStyle:高亮手柄
dataZoom.emphasis.handleStyle.color:颜色,如:rgb(255,255,255),rgba(255,255,255,1),#fff
dataZoom.emphasis.handleStyle.color:边框颜色
dataZoom.emphasis.handleStyle.color:边框宽度
dataZoom.emphasis.handleStyle.color:边框类型,可选值:solid(默认)、dashed、dotted、5、[5, 10]
dataZoom.emphasis.handleStyle.color:虚线偏移量,如:5
dataZoom.emphasis.handleStyle.color:线段末端绘制方式,可选值:butt(方形,默认)、round、square(矩形)
dataZoom.emphasis.handleStyle.color:连接属性,可选值:bevel(三角形,默认)、round、miter(菱形)
dataZoom.emphasis.handleStyle.color:菱形斜接面比例,默认为10,负数、0、Infinity、NaN均会被忽略
dataZoom.emphasis.handleStyle.color:阴影模糊大小
dataZoom.emphasis.handleStyle.color:阴影颜色
dataZoom.emphasis.handleStyle.color:阴影水平偏移
dataZoom.emphasis.handleStyle.color:阴影垂直偏移
dataZoom.emphasis.handleStyle.color:透明度,默认为1,数值为从0到1的数字(0不显示)

# moveStyle:移动手柄
dataZoom.emphasis.moveStyle.color:颜色,如:rgb(255,255,255),rgba(255,255,255,1),#fff
dataZoom.emphasis.moveStyle.color:边框颜色
dataZoom.emphasis.moveStyle.color:边框宽度
dataZoom.emphasis.moveStyle.color:边框类型,可选值:solid(默认)、dashed、dotted、5、[5, 10]
dataZoom.emphasis.moveStyle.color:虚线偏移量,如:5
dataZoom.emphasis.moveStyle.color:线段末端绘制方式,可选值:butt(方形,默认)、round、square(矩形)
dataZoom.emphasis.moveStyle.color:连接属性,可选值:bevel(三角形,默认)、round、miter(菱形)
dataZoom.emphasis.moveStyle.color:菱形斜接面比例,默认为10,负数、0、Infinity、NaN均会被忽略
dataZoom.emphasis.moveStyle.color:阴影模糊大小
dataZoom.emphasis.moveStyle.color:阴影颜色
dataZoom.emphasis.moveStyle.color:阴影水平偏移
dataZoom.emphasis.moveStyle.color:阴影垂直偏移
dataZoom.emphasis.moveStyle.color:透明度,默认为1,数值为从0到1的数字(0不显示)

                        

                                      

*********************

示例

                 

内置型区域缩放

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="/echarts/echarts.min.js"></script>
    <script src="/jquery/jquery-3.6.0.min.js"></script>
    <script type="text/javascript">
        $(function (){
            const myChart = echarts.init($("#container")[0]);

            // 指定图表的配置项和数据
            const option = {
                title: {
                    text: '产品年度销量图',
                    left: 'center',
                    textStyle: {
                        color: '#4d8'
                    }
                },
                tooltip: {},
                legend: {
                    left: 'right',
                    orient: 'vertical',
                    data: ['2018','2019','2020']
                },
                dataset: {
                    source: [
                        ['product','衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子'],
                        ['2018',200, 300, 290, 130, 180, 400],
                        ['2019',120, 120, 190, 430, 280, 600],
                        ['2020',300, 200, 300, 230, 280, 860]
                    ]
                },
                xAxis: {
                    type: 'category'
                },
                yAxis: {},
                series: [
                    {
                        name: '2018',
                        type: 'bar',
                        seriesLayoutBy: 'row'
                    },
                    {
                        name: '2019',
                        type: 'bar',
                        seriesLayoutBy: 'row'
                    },
                    {
                        name: '2020',
                        type: 'bar',
                        seriesLayoutBy: 'row'
                    }
                ],
                dataZoom: [
                    {
                        type: 'inside',
                        xAxisIndex: 0,
                        filterMode: 'filter'
                    },
                    {
                        type: 'inside',
                        left: 'left',
                        yAxisIndex: 0,
                        filterMode: 'none'
                    }
                ]
            };

            myChart.setOption(option);
        })
    </script>
</head>
<body>
<!-- 为 ECharts 准备一个定义了宽高的 DOM -->
<div id="container" style="width: 600px;height:400px;"></div>
</body>
</html>

滑动条区域缩放

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="/echarts/echarts.min.js"></script>
    <script src="/jquery/jquery-3.6.0.min.js"></script>
    <script type="text/javascript">
        $(function (){
            const myChart = echarts.init($("#container")[0]);

            // 指定图表的配置项和数据
            const option = {
                title: {
                    text: '产品年度销量图',
                    left: 'center',
                    textStyle: {
                        color: '#4d8'
                    }
                },
                tooltip: {},
                legend: {
                    left: 'right',
                    orient: 'vertical',
                    data: ['2018','2019','2020']
                },
                dataset: {
                    source: [
                        ['product','衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子'],
                        ['2018',200, 300, 290, 130, 180, 400],
                        ['2019',120, 120, 190, 430, 280, 600],
                        ['2020',300, 200, 300, 230, 280, 860]
                    ]
                },
                xAxis: {
                    type: 'category'
                },
                yAxis: {},
                series: [
                    {
                        name: '2018',
                        type: 'bar',
                        seriesLayoutBy: 'row'
                    },
                    {
                        name: '2019',
                        type: 'bar',
                        seriesLayoutBy: 'row'
                    },
                    {
                        name: '2020',
                        type: 'bar',
                        seriesLayoutBy: 'row'
                    }
                ],
                dataZoom: [
                    {
                        type: 'slider',
                        xAxisIndex: 0,
                        filterMode: 'filter'  //拖动x轴滑条对y轴数据范围有影响
                    },
                    {
                        type: 'slider',
                        left: 'left',
                        yAxisIndex: 0,
                        filterMode: 'none'    //拖动y轴滑条对x轴数据范围无影响
                    }
                ]
            };

            myChart.setOption(option);
        })
    </script>
</head>
<body>
<!-- 为 ECharts 准备一个定义了宽高的 DOM -->
<div id="container" style="width: 600px;height:400px;"></div>

</body>
</html>

   

                                 

内置缩放、滑动条缩放同时使用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="/echarts/echarts.min.js"></script>
    <script src="/jquery/jquery-3.6.0.min.js"></script>
    <script type="text/javascript">
        $(function (){
            const myChart = echarts.init($("#container")[0]);

            // 指定图表的配置项和数据
            const option = {
                title: {
                    text: '产品年度销量图',
                    left: 'center',
                    textStyle: {
                        color: '#4d8'
                    }
                },
                tooltip: {},
                legend: {
                    left: 'right',
                    orient: 'vertical',
                    data: ['2018','2019','2020']
                },
                dataset: {
                    source: [
                        ['product','衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子'],
                        ['2018',200, 300, 290, 130, 180, 400],
                        ['2019',120, 120, 190, 430, 280, 600],
                        ['2020',300, 200, 300, 230, 280, 860]
                    ]
                },
                xAxis: {
                    type: 'category'
                },
                yAxis: {},
                series: [
                    {
                        name: '2018',
                        type: 'bar',
                        seriesLayoutBy: 'row'
                    },
                    {
                        name: '2019',
                        type: 'bar',
                        seriesLayoutBy: 'row'
                    },
                    {
                        name: '2020',
                        type: 'bar',
                        seriesLayoutBy: 'row'
                    }
                ],
                dataZoom: [
                    {
                        type: 'inside',
                        xAxisIndex: 0,
                        filterMode: 'filter'
                    },
                    {
                        type: 'inside',
                        left: 'left',
                        yAxisIndex: 0,
                        filterMode: 'none'
                    },

                    {
                        type: 'slider',
                        xAxisIndex: 0,
                        filterMode: 'filter'
                    },
                    {
                        type: 'slider',
                        left: 'left',
                        yAxisIndex: 0,
                        filterMode: 'none'
                    }
                ]
            };

            myChart.setOption(option);
        })
    </script>
</head>
<body>
<!-- 为 ECharts 准备一个定义了宽高的 DOM -->
<div id="container" style="width: 600px;height:400px;"></div>
</body>
</html>

                                                       

                             

                              

Guess you like

Origin blog.csdn.net/weixin_43931625/article/details/121258231