• 19-Echarts 配置系列之: timeline 动态切换


    前言:

    timeline 动态切换 作用:在同一个图表上展示不同时间段的数据,并实现动态切换的效果。

    简介原理:在 timeline 中定义显示节点并与相应的数据结构绑定,然后调用 ECharts 提供的方法,重新渲染图表。

    options 对象用来配置图表的主要选项对象,包括了图表的数据、样式、交互行为等。

    baseOption 是option对象的一个子集,定义图表的基本配置选项。一般来说这个属性是在出现多个option 时,用 baseOption 来定义其中公共的配置,减少重复的定义实现一些配置的复用和统一管理。

    一、配置代码:

    1. option={
    2. // baseOption 中定义公共的 option 配置
    3. baseOption:{
    4. timeline:{
    5. show:true, // 是否显示 timeline
    6. type:'slider', // 属性类别仅这种类别
    7. axisType:'time', // 轴的类型
    8. currentIndex:0, // 当前显示的options 组,0时表示展示options[0] 的数据
    9. autoPlay:true, // 是否自动播放
    10. rewind:true, // 是否方向播放
    11. loop:true, // 是否循环播放
    12. playInterval:100, // 数据切换、跳动的间隔,单位毫秒
    13. realtime:true, // 点击还在拖拽圆点的时候,是否事实更新视图
    14. replaceMerge:undefined, // 合并方法,用来处理数据切换时,是将数据叠加还是重新绘制。
    15. controlPosition:'left', // 该组件的播放按钮的位置
    16. zlevel:0, // 组件所有图形的渲染等级
    17. z:0, // 组件所有图形的 z 值,控制图形的前后顺序。
    18. left:'auto', // 组件距离容器的左侧距离
    19. right:'auto', // 组件距离容器的右侧距离
    20. top:'10%', // 组件距离容器的顶部距离
    21. bottom:'10%', // 组件距离容器的底部距离
    22. padding:5, // 组件内边距
    23. orient:'horizontal', // 组件的展示方式,竖直或者水平
    24. inverse:true, // 是否方向放置
    25. symbol:'rect', // 标记的图形
    26. symbolSize:10, // 标记图形的大小
    27. symbolRotate:10, // 标记图形的旋转角度
    28. symbolKeepAspect:true, //
    29. symbolOffset:[0,0], // 标记相当于原本位置的偏移
    30. // timeline 轴线的样式
    31. lineStyle:{
    32. show:true, // 是否显示轴线
    33. color:'#DAE1F5', // 线的颜色
    34. width:2, // 线的宽度
    35. type:'solid', // 线的类别
    36. dashOffset:10, // 线为虚线时,虚线的偏移量
    37. cap:'butt', // 指定线段末端的绘制方法
    38. join:'bevel', // 设置两个长度不为 0 的相连部分如何连接
    39. miterLimit:10, // 设置斜截面限制比例
    40. shadowBlur:10, // 线阴影的模糊大小
    41. shadowColor:'red', // 线的阴影颜色
    42. shadowOffsetX:10, // 阴影水平偏移量
    43. shadowOffsetY:10, // 阴影竖直偏移量
    44. opacity:0.5, // 图形的透明度
    45. },
    46. // timeline 轴的文本标签样式
    47. label:{
    48. position:'auto', // 标签的显示位置
    49. show:true, // 标签是否显示
    50. interval:'auto', // 标签的间隔
    51. rotate:90, // 标签的旋转角度
    52. formatter:function (value, index) { // 标签显示文本的设置
    53. return value + 'kg';
    54. },
    55. color:'red', // 标签文本颜色
    56. fontStyle:'normal', // 文字字体的风格
    57. fontWeight:'normal', // 文字粗细
    58. fontFamily:'serif', // 字体系列
    59. fontSize:12, // 字体大小
    60. align:'center', // 文字水平对齐方式
    61. verticalAlign:'center', // 文字竖直对齐方式
    62. lineHeight:56, // 行高
    63. width:10, //文字显示宽度
    64. height:10, //文字显示高度
    65. textBorderColor:'red', //文本描边颜色
    66. textBorderWidth:10, //文本描边宽度
    67. textBorderType:'solid', //描边类型
    68. textBorderDashOffset:10, //描边为虚线时的偏移量
    69. textShadowColor:'transparent', //文字阴影颜色
    70. textShadowBlur:10, //文字阴影长度
    71. textShadowOffsetX:10, //文字阴影水平偏移量
    72. textShadowOffsetY:10, //文字阴影竖直偏移量
    73. overflow:'none', //文字超出是否截断
    74. ellipsis:'···', //文字截断时末尾显示内容
    75. padding:[5,5,5,5], //文本标签内边距
    76. backgroundColor:'auto', //文本标签的背景颜色
    77. borderColor:'red', //文本标签的边框颜色
    78. borderWidth:20, //文本标签的边框宽度
    79. borderType:'solid', //文本标签边框描边类型
    80. borderDashOffset:10, //描边为虚线时,虚线偏移量
    81. borderRadius:10, //文本标签的圆角
    82. shadowBlur:20, //文本标签阴影大小
    83. shadowColor:'red', //阴影颜色
    84. shadowOffsetX:20, //文本标签的阴影水平偏移
    85. shadowOffsetY:20, //文本标签的阴影竖直偏移
    86. // 富文本 自定义文本样式 并在上面的 formatter 中使用
    87. rich:{
    88. style1:{
    89. // 关于文本的基本样式都可以定义
    90. }
    91. },
    92. },
    93. // timeline 图形的样式
    94. itemStyle:{
    95. color:'red', // 图形颜色 优先级低于 areaColor
    96. borderWidth:2, // 图形描边宽度
    97. borderColor:'red', // 图形描边颜色
    98. borderType:'solid', // 图形描边线类型
    99. borderDashOffset:10, // 描边线为虚线时的虚线偏移量
    100. borderCap:'round', // 指定线段末端绘制方法
    101. borderJoin:'bevel', // 两个线段相连端形状
    102. borderMiterLimit:10, // borderJoin 为 miter 时,斜接面比例
    103. shadowBlur:10, // 图形的阴影大小
    104. shadowColor:'red', // 图形阴影的颜色
    105. shadowOffsetX:5, // 阴影水平偏移量
    106. shadowOffsetY:5, // 阴影竖直偏移量
    107. opacity:0.5, // 图形透明度
    108. },
    109. // 当前项的图形样式
    110. checkpointStyle:{
    111. symbol:'pin', // 标记的图形形状
    112. symbolSize: 10, // 标记图形大小
    113. symbolRotate:90, // 标记图形旋转角度
    114. symbolKeepAspect:true, // 如果symbol 为自定义的 path:// 格式,图形是否等比缩放
    115. symbolOffset:[10,10], // 相对于原本位置的偏移
    116. animation:true, // 当前节点切换时是否有动画
    117. animationDuration:300, // 当前节点切换动画时长
    118. animationEasing:'quinticInOut', // 当前节点动画的缓动效果
    119. // 剩余的样式内容和 itemStyle 中的一致
    120. },
    121. // 按钮样式
    122. controlStyle:{
    123. show:true, // 是否显示控制按钮
    124. showPlayBtn:true, // 是否显示播放按钮
    125. showPrevBtn:true, // 是否显示后退按钮
    126. showNextBtn:true, // 是否显示前进按钮
    127. itemSize:24, // 控制按钮的大小
    128. itemGap:12, // 控制按钮的间隔
    129. position:'left', // 控制按钮的位置
    130. playIcon:'image://url', // 播放按钮的图形
    131. stopIcon:'image://url', // 停止按钮的图形
    132. prevIcon:'image://url', // 后退按钮的图形
    133. nextIcon:'image://url', // 前进按钮的图形
    134. color:'red', // 图形颜色 优先级低于 areaColor
    135. borderWidth:2, // 图形描边宽度
    136. borderColor:'red', // 图形描边颜色
    137. borderType:'solid', // 图形描边线类型
    138. borderDashOffset:10, // 描边线为虚线时的虚线偏移量
    139. borderCap:'round', // 指定线段末端绘制方法
    140. borderJoin:'bevel', // 两个线段相连端形状
    141. borderMiterLimit:10, // borderJoin 为 miter 时,斜接面比例
    142. shadowBlur:10, // 图形的阴影大小
    143. shadowColor:'red', // 图形阴影的颜色
    144. shadowOffsetX:5, // 阴影水平偏移量
    145. shadowOffsetY:5, // 阴影竖直偏移量
    146. opacity:0.5, // 图形透明度
    147. },
    148. // 进度条中当前节点之前的的线条,拐点,标签的样式
    149. progress:{
    150. // 进度条中的线条样式,和上面的 lineStyle 配置内容一致
    151. lineStyle:{},
    152. // 进度条中的标记点图形样式,和上面的 itemStyle 配置内容一致
    153. itemStyle:{},
    154. // 进度条中的标签样式 这个配置视乎不太完整,很多 label 值在 progress 中是无效的
    155. label:{},
    156. },
    157. // timeline 中高亮样式配置
    158. emphasis:{
    159. // 标签高亮样式,和上面的 label 配置内容一致
    160. label:{},
    161. // 进度条中的标记点图形高亮样式,和上面的 itemStyle 配置内容一致
    162. itemStyle:{},
    163. // 当前项,高亮状态样式,与上 checkpointStyle 配置相同
    164. checkpointStyle:{},
    165. // 控制按钮高亮状态样式,与上 controlStyle 配置相同
    166. controlStyle:{}
    167. },
    168. // timeline 数据项
    169. data:[
    170. '2021',
    171. '2022',
    172. '2023',
    173. {
    174. value:'2024',
    175. // 单独配置指示器内容
    176. tooltip:{
    177. formatter:function(params){
    178. return params.name +'年'
    179. }
    180. },
    181. // 单独配置图标
    182. symbol:'diamond', // 图标图形
    183. symbolSize:12, // 图标大小
    184. symbolOffset:[5,5], // 图标偏移量
    185. symbolRotate:90, // 图标旋转角度
    186. // 单独配置文本标签样式
    187. label:{
    188. // 与上面配置的 label 内容一致
    189. },
    190. // 单独配置图形样式
    191. itemStyle:{
    192. // 配置内容与上方的 itemStyle 一致
    193. },
    194. // 单独配置高亮状态
    195. emphasis:{
    196. // 配置内容与上方的 emphasis 一致
    197. }
    198. }
    199. ]
    200. }
    201. }
    202. }

    二、解剖图:

    三、配置实例代码

    使用:

    代码:

    1. option = {
    2. baseOption: {
    3. grid:{
    4. height:'60%'
    5. },
    6. tooltip:{},
    7. // 核心配置
    8. timeline:{
    9. bottom:'5%',
    10. symbolSize:24,
    11. // 文本标签样式
    12. label:{
    13. position:20,
    14. fontSize:24,
    15. },
    16. // 控制按钮样式
    17. controlStyle:{
    18. // itemSize:24,
    19. itemGap:32
    20. },
    21. checkpointStyle:{
    22. symbolSize:24,
    23. },
    24. // 进度条中的线条,拐点,标签的样式。
    25. progress:{
    26. label:{
    27. fontSize:24,
    28. show:false,
    29. textBorderColor:'red',
    30. textBorderWidth:5,
    31. },
    32. },
    33. // 高亮样式配置
    34. emphasis:{
    35. checkpointStyle:{
    36. color:'red',
    37. },
    38. },
    39. axisType: "category",
    40. autoPlay: true,
    41. playInterval: 10000,
    42. // 数据项配置
    43. data:[
    44. '2020',
    45. '2021',
    46. '2022',
    47. {
    48. value:'2023',
    49. tooltip:{
    50. formatter:'{b} GDP达到一个高度'
    51. },
    52. symbol:'diamond',
    53. }
    54. ],
    55. },
    56. title:{
    57. subtext: '数据来自撒娇的骑士'
    58. },
    59. xAxis: {
    60. type: 'category',
    61. data: ['周一', '周二', '周三', '周四', '周五', '周六', '周天']
    62. },
    63. yAxis: {
    64. type: 'value'
    65. },
    66. // 统一定义 series 的
    67. series: [
    68. {
    69. name: '快乐值',
    70. type: 'bar',
    71. },
    72. {
    73. name: '消费',
    74. type: 'line',
    75. }
    76. ]
    77. },
    78. // 设置 每个节点的 配置:标题,数据,图形类型等
    79. options:[
    80. {
    81. title: { text: '2020年平均数据' },
    82. series:[
    83. {
    84. data: [150, 230, 224, 218, 135, 147, 260]
    85. },
    86. {
    87. data: [120, 130, 254, 268, 175, 167, 280],
    88. },
    89. ]
    90. },
    91. {
    92. title: { text: '2021年平均数据' },
    93. series:[
    94. {
    95. data: [180, 250, 264, 298, 135, 147, 260]
    96. },
    97. {
    98. data: [110, 120, 244, 258, 185, 177, 270]
    99. }
    100. ]
    101. },
    102. {
    103. title: { text: '2022年平均数据' },
    104. series:[
    105. {
    106. data: [140, 230, 224, 222, 135, 147, 260]
    107. },
    108. {
    109. data: [125, 130, 254, 268, 180, 173, 285]
    110. }
    111. ]
    112. },
    113. {
    114. title: { text: '2023年平均数据' },
    115. series:[
    116. {
    117. data: [150, 230, 230, 218, 135, 147, 260]
    118. },
    119. {
    120. data: [120, 160, 280, 268, 195, 167, 280]
    121. }
    122. ]
    123. }
    124. ]
    125. };

  • 相关阅读:
    【源码】完美运营版商城+虚拟商品全功能商城+全能商城小程序+智慧商城系统+全品类百货商城
    Windows之应用安装程序 —— winget
    C语言指针速成下篇
    【项目部署】使用Jenkins一键打包部署SpringBoot应用
    ORBslam3中想把ros的代码放在主工程里编译出现内存错误
    富文本文案存储翻译方案
    目标检测DiffusionDet: Diffusion Model for Object Detection
    Android修行手册 - TabLayout全解析 - 小红点和自定义样式
    2022年高教社杯全国大学生数学建模竞赛-A题:波浪能最大输出功率设计(附MATLAB代码)
    OCR:C++ PaddleOCR C++ PaddleOCR vs2019 (CPU版)保姆教程
  • 原文地址:https://blog.csdn.net/youyudehan/article/details/136279041