解决方案:
  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. Schema与数据类型优化

    良好的逻辑设计和物理设计是高性能的基石,应该根据系统将要执行的查询数据来设计schema,这往往需要权衡各种因素. MySQL支持的数据类型非常多,选择正确的数据类型对于获得高性能至关重要. 更小的通 ...

  2. 存储管理工具StorageExplorer的基本使用

    本文主要介绍Azure StorageExplorer工具的安装及基本使用 1.打开Azure官方链接:https://www.azure.cn/downloads/ 2.按照向导进行安装 3.可以通 ...

  3. rpm命令的使用

    如果服务器配置了本地yum源,大部分的常用软件包都是有的.如果差了头文件或者什么so文件,可以按如下方式找:#以memory.h为例 [root@sz-cdn-centos7-1 tmp]# wher ...

  4. 获取客户端登录ip地址

    request方法客户端IP: request.getRemoteAddr()  输出:192.168.0.106 客户端主机名:request.getRemoteHost()输出:abc 在JSP里 ...

  5. git 不成功

    fatal: Interactive git shell is not enabled.hint: ~/git-shell-commands should exist and have read an ...

  6. Zabbix-3.2.4实现微信(WeChat)告警

    摘自abcdocker网站 原文地址:https://www.abcdocker.com/abcdocker/2472 Zabbix可以通过多种方式把告警信息发送到指定人,常用的有邮件,短信报警方式, ...

  7. MySQL权限详解

    MySQL权限级别介绍 MySQL权限级别 全局性的管理权限,作用于整个MySQL实例级别 数据库级别的权限,作用于某个指定的数据库上或者所有的数据库上 数据库对象级别的权限,作用于指定的数据库对象上 ...

  8. img的属性alt 与 title的区别

    当我们给图片加属性的时候,初学时,可能会弄混淆alt与title的区别,那么这两个的区别,我们可以从本意来看—— alt原词是“Alternate”,切换,替换的意思.常用的输入法切换会用到alt键进 ...

  9. Cypher查询语言--Neo4j之聚合函数(五)

    目录 聚合Aggregation 计数 计算节点数 分组计算关系类型 计算实体数 计算非空可以值数 求和sum 平均值avg 最大值max 最小值min 聚类COLLECT 相异DISTINCT 聚合 ...

  10. 浅谈python中的闭包函数

    闭包函数初探 通常我们定义函数都是这样定义的 def foo(): pass 其实在函数式编程中,函数里面还可以嵌套函数,如下面这样 def foo(): print("hello worl ...