解决方案:
  1. 调整option中的grid.top值才能避免重叠;(可以设置定制,也可以定义了一个计算公式)

2. 文档注明【特殊字符串 ''(空字符串)或者 '\n' (换行字符串)用于图例的换行。】

转载来源:http://blog.csdn.net/doleria/article/details/52503763

内容如下:

github地址:Data Visualization

---------------------------------------------------------------------------------------------------------------------------------------

当Echarts报表表头过多时,虽然Echarts会做自适应,但是由于图例文字可能过长等,图例与图表线条难免会重叠显示。如下图所示:

参考这篇文章,以及Echarts的官方文档,得出以下解决方案:

1. 文档注明【特殊字符串 ''(空字符串)或者 '\n' (换行字符串)用于图例的换行。】
    2. 换行后动态调整option中的grid.top值才能避免重叠;(定义了一个计算公式)

在解决这个问题时,用PHP写了个定制Echarts的类,其中与调整图例相关的部分如下,仅供参考:

  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: liuyuning
  5. * Date: 2016/8/9
  6. * Time: 18:59
  7. */
  8. class Ep_CustomizeEcharts {
  9. const LINE_NUM_EACH_ROW              = 3;  //图例中每行显示的线条数目;
  10. const DEFAULT_LINE_NUM               = 6;  //采用默认grid.top值的默认线条数目;
  11. const DEFAULT_GRID_TOP_PECENTAGE     = 18; //默认的grid.top百分比(整数部分);
  12. const DELTA_GRID_TOP_PECENTAGE       = 9;  //超出默认线条数时的grid.top百分比增量(整数部分);
  13. const MAX_GRID_TOP_PECENTAGE         = 50; //最大的grid.top百分比(整数部分);
  14. /**
  15. * 调整图例显示样式
  16. * @params array 需要调整的图例
  17. * @return array
  18. */
  19. public function adjustLegend ($beforeLegend) {
  20. // 图例太多时,Echarts文档注明【特殊字符串 ''(空字符串)或者 '\n' (换行字符串)用于图例的换行。】
  21. $afterLegend = array();
  22. $index = 0;
  23. $len = count($beforeLegend);
  24. for ( $i = 0; $i < $len; $i++) {
  25. if (($index+1)%(self::LINE_NUM_EACH_ROW + 1) === 0) {
  26. $afterLegend[$index] = '';
  27. $index++;
  28. $afterLegend[$index] = $beforeLegend[$i];
  29. } else {
  30. $afterLegend[$index] = $beforeLegend[$i];
  31. }
  32. $index++;
  33. }
  34. return $afterLegend;
  35. }
  36. /**
  37. * 设置grid.top值
  38. * @params array 需要调整的图例
  39. * @return string
  40. */
  41. public function setGridTop($arrLegend) {
  42. $len = count($arrLegend);
  43. // 如果图例太多,需要调整option中的grid.top值才能避免重叠
  44. $topInt = $len > self::DEFAULT_LINE_NUM ?
  45. self::DEFAULT_GRID_TOP_PECENTAGE + self::DELTA_GRID_TOP_PECENTAGE
  46. * (Ceil(($len - self::DEFAULT_LINE_NUM)/self::LINE_NUM_EACH_ROW))
  47. : self::DEFAULT_GRID_TOP_PECENTAGE;
  48. if ($topInt >= self::MAX_GRID_TOP_PECENTAGE) {
  49. $topInt = self::MAX_GRID_TOP_PECENTAGE;
  50. }
  51. $gridTop = "$topInt%";
  52. return $gridTop;
  53. }
  54. }

调整好的效果如下图所示:

github地址:Data Visualization

echarts legend 重叠 (转载)的更多相关文章

  1. echarts legend文字配置多个颜色(转)

    困扰很久的问题终于解决了 oh yea! echarts legend文字配置多个颜色legend: {data: [{name:‘直接访问’,icon : ‘circle’,textStyle: { ...

  2. echarts legend 图例文字闪烁显示

    最近同事小夏遇到一个需求:客户要求echarts图表上指定的图例文字闪烁显示. 先放一张图: 客户要求:待处理字样要闪动显示. 小夏一番百度之后,求助于我:快来看看,怎么有客户提这种百度都百度不到答案 ...

  3. echarts散点图重叠

    今天做echarts图标,使用了散点图.很快实现,发现数据不对,应该是3个的企业,页面只显示了2个,查了半天才发现原来是有两个重叠了.想办法解决了,在网上费劲九牛二虎只力终于找到了解决的方法,下面来解 ...

  4. echarts legend 限制规定显示个数,显示省略号,修改默认样式

    类似百度统计,有的时候legend的个数比较多,但是前端需要控制初始化显示的个数,以及最多显示的条数,先看效果图: 先给代码: <!DOCTYPE html> <html lang= ...

  5. d3.js 教程 模仿echarts legend功能

    上一节记录没有加上echarts的legend功能,这一小节补一下. 1. 数据 我们可以从echarts中看出,折线数据并不是我们传进入的原始数据(多数情况下我们也不会修改原始数据),而是原始数组的 ...

  6. echarts legend 的单选模式以及轮播技巧

    1.设置 legend 属性: selectedMode: 'single' 2.使用 myCharts.dispatchAction 来设置legend的聚焦 broadcast (v) { // ...

  7. Echarts - legend属性设置

    legend: { orient: 'horizontal', // 'vertical' x: 'right', // 'center' | 'left' | {number}, y: 'top', ...

  8. echarts的title和legend重合解决(各种小细节)

    一:关于title与legend重叠 1.重合样子 2.解决办法: legend:{ show: true, top:"6%",//与上方的距离 可百分比% 可像素px }, 3. ...

  9. CSS外边距margin上下元素重叠

    CSS外边距margin上下元素重叠 转载:http://www.gaoyouyou.com/view/77.htm 两个或多个块级盒子的垂直相邻边界会重合.结果的边界宽度是相邻边界宽度中最大的值.如 ...

随机推荐

  1. linux下用iptables做本机端口转发方法(转载)

    一 :从一台机到另一台机端口转发 启用网卡转发功能 #echo 1 > /proc/sys/net/ipv4/ip_forward 举例:从192.168.0.132:21521(新端口)访问1 ...

  2. java学习总结之文件操作--ByteArrayOutputStream的用法

    ByteArrayOutputStream类是在创建它的实例时,程序内部创建一个byte型别数组的缓冲区, 然后利用ByteArrayOutputStream和ByteArrayInputStream ...

  3. [知了堂学习笔记]_eclipse引入svn插件,并将项目同步到svn

    1. eclipse中不存在SVN问题的解决 1.1发现Team->Share project 下没有svn. 1.2下载安装svn插件. 选择help->Eclipse Marketpl ...

  4. Angular19 自定义表单控件

    1 需求 当开发者需要一个特定的表单控件时就需要自己开发一个和默认提供的表单控件用法相似的控件来作为表单控件:自定义的表单控件必须考虑模型和视图之间的数据怎么进行交互 2 官方文档 -> 点击前 ...

  5. Windows核心编程&错误处理

    知识概要 (1) MAKELANGID Windows宏,用一个来主语言标识和从语言标识创建一个语言标识符 MAKELANGID(ushort usPrimaryLanguage, ushort us ...

  6. 08_jquery基础应用第一天

    视频来源:麦子学院 讲师:李景山

  7. 手机文件夹的emulated什么意思

    词典翻译是仿真,就是自带的存储卡, 手机的储存方式有两种,一种是手机内存 ,一种是SD卡内存.

  8. matlab判断文件或文件夹是否存在

    当前目录中包含以下文件及文件夹: startup.m win64/ … 判断当前目录中是否存在startup.m文件 if ~exist('startup.m','file')==0    error ...

  9. Core Animation 文档翻译 (第四篇)

    Core Animation 文档翻译(第四篇) 让Layer的content动画起来 核心动画的基础接口以及为拥有Layer的View做的动画扩展接口,使得为Layer制作复杂动画变得简单化.例如改 ...

  10. [DeeplearningAI笔记]神经网络与深度学习3.2_3.11(激活函数)浅层神经网络

    觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.2 神经网络表示 对于一个由输入层,隐藏层,输出层三层所组成的神经网络来说,输入层,即输入数据被称为第0层,中间层被称为第1层,输出层被称为 ...