ECharts框架分段视觉映射在移动端适配

作者:黎燃 时间:2024-04-28 09:53:49 

移动端适配

满足多个查询时的优先级: 请注意,可以同时满足多个查询,并且它们都将由mergeOption合并,mergeOption稍后由merge定义(即更高的优先级)。 默认查询: 如果媒体中有一项不写入查询,则表示“默认值”。也就是说,如果不符合所有规则,则采用此选项。 容器尺寸实时变化时的注意事项:

ECharts框架分段视觉映射在移动端适配

在许多情况下,不需要通过拖动任意改变容器DOM节点的大小,而是根据不同的终端设置几个典型的大小。 但是,如果容器DOM节点需要能够通过拖动任意更改其大小,那么在当前使用它时应该注意这一点:如果配置项出现在查询选项中,那么它也必须出现在其他查询选项中。否则,它无法返回到原始状态。(左/右/上/下/宽/高不受此限制。)

{
       query: {
           maxWidth: 500               // 当容器宽度小于 500 时。
       },
       option: {
           legend: {
               right: 10,              // legend 放置在右侧中间。
               top: '15%',
               orient: 'vertical'      // 纵向布局。
           },
           series: [                   // 两个饼图上下布局。
               {
                   radius: [20, '50%'],
                   center: ['50%', '30%']
               },
               {
                   radius: [30, '50%'],
                   center: ['50%', '75%']
               }
           ]
       }
   },
   ...
]

复合选项中的媒体不支持合并 也就是说,当设置了setOption(rawOption)时,如果rawOption是一个复合选项(包括媒体列表),则新的rawOption媒体列表不会与旧媒体列表合并,而是简单地替换。当然,baseOption通常仍会与旧选项合并。 事实上,很少有场景需要使用“复合选项”多次设置该选项。我们建议的做法是,在使用mediaQuery时,对第一个setOption使用“复合选项”,而对后面的setOption只使用“原子选项”,也就是说,只使用setOption更改baseOption。

{
   minWidth: 200,
   maxHeight: 300,
   minAspectRatio: 1.3
}

现在支持三个属性:width、height和aspectRatio。每个属性的前缀都可以是min或max。例如,minWidth:200表示“大于或等于200px宽度”。这两个属性写在一起表示“和”。例如,{minWidth:200,maxHeight:300}表示“宽度大于或等于200px,高度小于或等于300px”。 选项: 由于媒体中的选项是原子选项,理论上,可以编写任何选项配置项。但通常情况下,我们只写布局定位,例如拦截上面示例中的一些查询选项:

option = {
   // 这里是基本的『原子option』。
   title: {...},
   legend: {...},
   series: [{...}, {...}, ...],
   ...,
   media: [ //
       {
           query: {...},   // 这里写规则。
           option: {       // 这里写此规则满足下的option。
               legend: {...},
               ...
           }
       },
       {
           query: {...},   // 第二个规则。
           option: {       // 第二个规则对应的option。
               legend: {...},
               ...
           }
       },
       {                   //
           option: {       //
               legend: {...},
               ...
           }
       }
   ]
};

这里定义了 media query 的逐条规则。这条里没有写规则,表示『默认』,即所有规则都不满足时,采纳这个option。

数据和维度

ECharts中的数据通常存储在系列数据中。根据图表的类型,数据的具体形式可能略有不同。例如,它可以是线性表、树或图形。但它们都有一个共同点:它们是“数据项”的集合。每个数据项包含“值”和其他信息(如有必要)。每个数据值可以是单个数值(一维)或数组(多维)。 例如,series最常见的数据形式是“线性表”,即常见的数组: 这里每一个项就是数据项(dataItem),这是数据项的数据值(value)

series: {
   data: [
       {    
           value: 2323, //
           itemStyle: {...}
       },
       1212,   //
       2323,   //
       4343,
       3434
   ]
}

也可以直接是 dataItem 的 value,这更常见。每个 value 都是『一维』的。

分段视觉映射组件

分段视觉映射组件(visualMapPiecewise)有三种模式: 连续数据的平均分割:根据visualMap Peerswise SplitNumber自动平均分割成几个块。 连续数据的自定义分割:根据visualMap Piecewise Pieces定义每个块的范围。 离散数据(分类数据):类别在visualMap pricewise Categories中定义。 可视化映射模式的配置 由于这是“数据”到“视觉元素”的映射,因此可以在visualMap中指定数据的“哪个维度”(参见visualMap.dimension),以映射到哪个“视觉元素“(参见visualMap.inRange和visualMap.outOfRange)。

option = {
   visualMap: [
       {
           type: 'piecewise',
           min: 0,
           max: 5000,
           dimension: 3,      
           seriesIndex: 4,    
           inRange: {          
               color: ['blue', '#121122', 'red'],
               symbolSize: [30, 100]              
           },
           outOfRange: {       // 选中范围外的视觉配置
               symbolSize: [30, 100]
           }
       },
       ...
   ]
};

series.data 的第四个维度(即 value[3])被映射,series.data 的第四个维度(即 value[3])被映射。

事件和行为

myChart.on('click', function (params) {
   console.log(params.name);
});

在ECharts中,事件可以分为两种类型:一种是用户用鼠标单击时触发的事件,或者是悬停图表的图形;另一种是用户使用可以交互的组件后触发的行为事件,例如切换图例开关时触发的“legendseletchanged”事件(请注意,切换图例开关不会触发“legendselect tchchanged”事件),缩放数据区域时触发的”datazoom“事件。

myChart.on('click', function (params) {
   if (params.componentType === 'markPoint') {
       if (params.seriesIndex === 5) {
       }
   }
   else if (params.componentType === 'series') {
       if (params.seriesType === 'graph') {
           if (params.dataType === 'edge') {
           }
           else {
           }
       }
   }
});

点击到了 markPoint 上,点击到了 index 为 5 的 series 的 markPoint 上。点击到了 graph 的 edge(边)上。点击到了 graph 的 node(节点)上。在ECharts中,几乎所有的组件交互都会触发相应的事件。事件文档中列出了常见事件和事件对应参数。

来源:https://juejin.cn/post/7176283879098023993

标签:ECharts,分段,视觉映射,移动端,适配
0
投稿

猜你喜欢

  • Python脚本实现下载合并SAE日志

    2023-04-13 06:41:41
  • 对python numpy数组中冒号的使用方法详解

    2022-05-15 11:26:41
  • Python实现备份MySQL数据库的方法示例

    2024-01-27 18:20:04
  • golang 比较浮点数的大小方式

    2024-04-28 10:48:50
  • 利用Python生成Excel炫酷图表

    2023-03-09 21:52:00
  • 跟我学习javascript的作用域与作用域链

    2024-04-22 12:56:40
  • matlab读取串口数据并显示曲线的实现示例

    2022-12-17 15:56:17
  • 检测python爬虫时是否代理ip伪装成功的方法

    2021-07-31 20:23:44
  • Go语言ORM包中使用worm构造查询条件的实例详解

    2024-05-21 10:18:19
  • asp最简单的生成验证码代码

    2011-03-07 11:05:00
  • ORACLE 最大连接数的问题

    2009-07-23 14:27:00
  • Python多进程分块读取超大文件的方法

    2023-12-07 02:19:28
  • VSCode 最全实用插件小结

    2022-12-11 17:03:47
  • CSS Sprites对CSS布局的意义、优点和缺点介绍

    2008-07-14 07:22:00
  • python 通过 socket 发送文件的实例代码

    2022-10-07 17:32:48
  • 使用Python实现Wake On Lan远程开机功能

    2023-07-26 21:44:06
  • Python实现批量导入1000条xlsx数据

    2021-01-11 05:55:47
  • Python3 使用selenium插件爬取苏宁商家联系电话

    2023-12-20 01:39:57
  • OpenCV实战之AI照片背景替换

    2022-06-11 06:58:09
  • MySQL之select、distinct、limit的使用

    2024-01-22 04:41:20
  • asp之家 网络编程 m.aspxhome.com