当前位置:   article > 正文

Echarts 问题解决 —— 环状饼图默认显示第一条数据及提示框、鼠标移动上去后不突出、中间展示指定样式数字、鼠标移到扇形上显示不同颜色的数字、循环高亮显示饼图各模块的扇形;_echarts环形图突出

echarts环形图突出

目录

1.环状饼图默认显示第一条数据及提示框

2.环状饼图鼠标移动上去后不突出显示 

3.环状饼图中间展示指定样式数字

4.环状饼图鼠标移到图例上显示不同颜色的数字

5.环状饼图循环高亮显示饼图各模块的扇形

6.formatter、rich 结合

7.折点无法完全显示

8.设置时延后图表不显示


1.环状饼图默认显示第一条数据及提示框

  • 效果展示:
  1. // 默认展示第一条数据的提示框
  2. myChart.dispatchAction({
  3. type: 'showTip',
  4. seriesIndex: 0,
  5. dataIndex: 0
  6. });
  7. // 默认高亮展示第一条数据
  8. myChart.dispatchAction({
  9. type: 'highlight',
  10. seriesIndex: 0,
  11. dataIndex: 0
  12. });
  13. myChart.on('mouseover', (v) => {
  14. if (v.dataIndex != 0) {
  15. // 高亮显示悬停的那块
  16. myChart.dispatchAction({
  17. type: 'hideTip',
  18. seriesIndex: 0,
  19. dataIndex: 0
  20. });
  21. // 当检测到鼠标悬停事件,取消所有选中高亮
  22. myChart.dispatchAction({
  23. type: 'downplay',
  24. seriesIndex: 0,
  25. dataIndex: 0
  26. });
  27. }
  28. });
  29. // 检测鼠标移出后显示之前默认高亮的那块
  30. myChart.on('mouseout', (v) => {
  31. myChart.dispatchAction({
  32. type: 'showTip',
  33. seriesIndex: 0,
  34. dataIndex: 0
  35. });
  36. myChart.dispatchAction({
  37. type: 'highlight',
  38. seriesIndex: 0,
  39. dataIndex: 0
  40. });
  41. });

2.环状饼图鼠标移动上去后不突出显示 

  • 效果展示:鼠标移动上去之后,图表保持原样,而不是像 1 中那样突出展示
  • 扇形不突出:series / hoverAnimation: false

3.环状饼图中间展示指定样式数字

  • 效果展示:见 2 中的环状图中间文字数字的效果
  • 为中间内容指定单独样式: series / emphasis / label / formatter + rich
  1. emphasis: {
  2. label: {
  3. // 未指定元素时,其他文本的样子
  4. show: true,
  5. fontSize: "18",
  6. fontWeight: "bold",
  7. padding: [-10, 0, 0, 0],
  8. formatter: function(data) {
  9. // 将中间的文本信息进行分割,设置不同的类名
  10. // 百分数字的样式、百分号的样式、百分项名字的样式
  11. return (
  12. "{percent|" +
  13. data.percent +
  14. "}" +
  15. "{per|%}" +
  16. "\n{name|" +
  17. data.name +
  18. "}"
  19. );
  20. },
  21. // 书写不同类名对应的样式
  22. rich: {
  23. // 中间彩色数字
  24. percent: {
  25. fontSize: 28,
  26. fontFamily: "DIN-Bold",
  27. fontWeight: "bold",
  28. color: "#FFEA00",
  29. },
  30. // 中间百分号
  31. per: {
  32. fontSize: 16,
  33. color: "#FFFFFF",
  34. fontFamily: "MicrosoftYaHei",
  35. padding: [0, 5, 5, -5],
  36. },
  37. // 中间下方标题
  38. name: {
  39. fontSize: 16,
  40. color: "#FFFFFF",
  41. fontFamily: "MicrosoftYaHei",
  42. padding: [-25, 0, 0, 0],
  43. },
  44. },
  45. },
  46. },

4.环状饼图鼠标移到图例上显示不同颜色的数字

  • 场景再现:
  • 实现饼图中,鼠标悬浮在每个模块上,图例相应模块的数值颜色发生改变
  • 问题分析:
  1. 各个模块对应的数值设置对应的富文本样式
  2. 监听饼图实例 myChart 的 mouseover 和 mouseout 事件,在事件回调函数里获取参数对象的 dataIndex 属性
  3. 使用 switch case 判断鼠标悬浮在哪个模块上,让该模块的数值对应它自己的富文本样式
  4. 最后,把 option 追加到 myChart 实例上
  1. formatter: function (name) {
  2. var target ;
  3. for (1et i = 0; i < data.length; i++) {
  4. if (data[i].name === name) {
  5. target = data[i].value
  6. }
  7. }
  8. var arr=['{b|'+ name + '},'{a' + (index) + '|' + target + '}']
  9. index++ ;
  10. index %= data . length;
  11. return arr. join('')
  12. },
  13. textstyle: {
  14. width: 200,
  15. rich: {
  16. a0: {
  17. fontSize: 12,
  18. color:” #fff"
  19. align: 'right',
  20. fontweight: ' bold'
  21. },
  22. a1: { ...
  23. // 最后,把 option 追加到 myChart 实例上
  24. myChart . on( ' mouseover', function (v) {
  25. var dataIndex =' a' + v.dataIndex;
  26. switch (dataIndex) {
  27. case 'a0' :
  28. option.legend.textStyle.rich.a0.color = ' #00ffff'
  29. break;
  30. case 'a1' :
  31. option.legend.textStyle.rich.a0.color = ' #00ffff'
  32. break;
  33. ......

 

5.环状饼图循环高亮显示饼图各模块的扇形

  • 问题分析:设置定时器,使用 Echarts 提供的 dispatchAction 触发图表行为:
  • 每次高亮后,改变需要高亮显示模块的索引
  1. /**
  2. * 饼图各模块自动循环高亮显示
  3. *
  4. */
  5. function autoHighlight(flag) {
  6. var index = -1
  7. mTime = setInterval(function () {
  8. myChart.dispatchAction({
  9. type: 'downplay',
  10. seriesIndex: 0,
  11. dataIndex: index
  12. });
  13. myChart.dispatchAction({
  14. type: 'highlight',
  15. seriesIndex: 0,
  16. dataIndex: index + 1
  17. });
  18. index++;
  19. if (index >= option.series[0].data.length) {
  20. index = -1;
  21. }
  22. }, 1000)
  23. }

 

6.formatter、rich 结合

  • 给 label 添加 formatter rich富文本 格式化图例文本
  1. formatter: function(data) {
  2. return '{percent|' + data.percent + '}'
  3. }
  4. rich: {
  5. percent: {
  6. fontSize: 40,
  7. fontWeight: 'bold',
  8. fontFamily: 'din-bold'
  9. }

7.折点无法完全显示

  1. series: [
  2. showAllSymbol: true;
  3. ]

8.设置时延后图表不显示

  • 已经给图表容器设置宽高了,并且增加了时延,图表显示不出来
  • 改变导入 echarts 的形式

 

  1. // bad:
  2. import echarts from 'echarts'
  3. // good:
  4. import * as echarts from 'echarts'

  

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/105506
推荐阅读