echarts中饼状图数据太多进行翻页

简介: echarts中饼状图数据太多进行翻页

echarts饼状图数据太多


1425695-20211203125430925-529618153.png

echarts 饼状图内容太多怎么处理


有些时候,我们饼状图中echarts的数据可能会很多。


这个时候展示肯定会密密麻麻的。导致显示很凌乱


我们需要'翻页'类似表格展示下一页的数据


在legend中下需要配置属性 type: 'scroll',表示滚动


数据太多可以滚动的形式进展示


如下:


legend: {
  type: 'scroll',
}


1425695-20211203125702624-1142477907.png


自定义分页箭头


但是我们发现这个分页箭头不好看。


所以我们需要优化这个分页的箭头


通过官网的描述信息我们配置如下这只


这里设置箭头的路径


var option = {
  legend: {
    type: 'scroll', 滚动
    orient: 'vertical', 垂直方向滚动
    pageIcons: {
      vertical: [
        'path://M472.064 272.448l-399.232 399.232c-22.08 22.08-22.08 57.792 0 79.872 22.016 22.016 57.792 22.08 79.872 0L512 392.256l359.296 359.296c22.016 22.016 57.792 22.08 79.872 0 22.08-22.08 22.016-57.792 0-79.872L551.936 272.448C529.856 250.432 494.144 250.432 472.064 272.448z',
        'path://M472.064 751.552 72.832 352.32c-22.08-22.08-22.08-57.792 0-79.872 22.016-22.016 57.792-22.08 79.872 0L512 631.744l359.296-359.296c22.016-22.016 57.792-22.08 79.872 0 22.08 22.08 22.016 57.792 0 79.872l-399.232 399.232C529.856 773.568 494.144 773.568 472.064 751.552z',
      ],
    },
    pageButtonPosition: 'end', // 翻页的位置。'start':控制块在左或上,end控制块在右或下。
    pageIconColor: '#29bca8', // 可以点击的翻页按钮颜色
    pageIconInactiveColor: '#7f7f7f', // 禁用的按钮颜色
    pageIconSize: 14, //这当然就是按钮的大小
  }
}

1425695-20211203131057355-1573865801.png


有的小伙伴会好奇


path的值怎么来的,我是从svg中获取的,


如何在iconfont中获取图标的svg代码



1425695-20211203125934151-1703098968.png


1425695-20211203125954539-1225491402.png


pageIcons 的值哪些?


第1种:svg的代码,就是我刚刚使用的


第2种:URL为图片链接例如:'image://http://xxx.xxx.xxx/a/b.png'


第3种:URL为dataURI 例如:


'image://data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7'


定义legend的显示内容样式的设置


1425695-20211203131257435-275622800.png

在legend下有一个formatter属性


我们可以通过 formatter 来自定义文字


formatter: function(name) {
  let showNum
  let percentage
  for (var i = 0; i < listSummary.length; i++) {
    if (listSummary[i].name == name) {
      showNum = listSummary[i].value
      if (lejibaoxiuTotals) { //lejibaoxiuTotals可能为0
        // 计算百分比
        percentage =((listSummary[i].value /lejibaoxiuTotals) *100).toFixed(2) + '%'
      } else {
        percentage = ''
      }
    }
  }
  return `{name| ${ name.length > 5 ? name.slice(0, 5) + '...' : name}}
  | {val| ${percentage}}  {numNum| ${showNum}}`
},
通过富文本来控制样式
textStyle: {
  fontSize: 13, //字体的大小
  color: '#D9D9D9',
  rich: {
    //设置name属性的样式(显示的:华为x),这里与 return中的name保持一致
    name: {
      color: '#595959',
      width: 77, //宽度
      padding: [0, 0, 0, 0], //间距表示 上右下左
    },
    //设置val(百分比)属性的样式,这里与 return中的val保持一致
    val: {
      width: 50,//宽度
      color: '#8c8c8c', 、
      padding: [0, 10, 0, 6], //间距表示 上右下左
    },
    //设置numNum(数量)属性的样式,这里与 return中的numNum保持一致
    numNum: {
      color: '#8c8c8c',
    },
  },
},

这样就好看一些了1425695-20211203130649165-617185775.png


最终的代码


<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://cdn.staticfile.org/echarts/4.3.0/echarts.min.js"></script>
  </head>
  <body>
<div  style="width: 600px;height: 500px;background-color: pink;"></div>
<script>
  var myChart  = echarts.init(document.querySelector('div'))
  let lejibaoxiuTotals=140;
  let listSummary=[
    {name:'华为1',value:10},
    {name:'华为2',value:10},
    {name:'华为3',value:10},
    {name:'华为4',value:10},
    {name:'华为5',value:10},
    {name:'华为6',value:10},
    {name:'华为7',value:10},
    {name:'华为8',value:10},
    {name:'华为9',value:10},
    {name:'华为10',value:10},
    {name:'华为12',value:10},
    {name:'华1为13',value:10},
    {name:'012华3为',value:10},
    {name:'华1为2',value:10},
  ]
  var option = {
    tooltip: {
      trigger: 'item',
    },
    legend: {
      type: 'scroll',
      orient: 'vertical',
      top: 'center',
      bottom: 40,
      right: 40,
      icon: 'circle',
      itemGap: 18,
      itemWidth: 8,
      itemHeight: 8,
      pageButtonItemGap: 5,
      textStyle: {
        fontSize: 13,
        color: '#D9D9D9',
        rich: {
          name: {
            color: '#595959',
            width: 77,
            padding: [0, 0, 0, 0],
          },
          val: {
            width: 50,
            color: '#8c8c8c',
            padding: [0, 10, 0, 6],
          },
          numNum: {
            color: '#8c8c8c',
          },
        },
      },
      // 控制legend的间距
      padding: [10, 0, 20, 20],
      // 这里设置箭头的路径
      pageIcons: {
        vertical: [
          'path://M472.064 272.448l-399.232 399.232c-22.08 22.08-22.08 57.792 0 79.872 22.016 22.016 57.792 22.08 79.872 0L512 392.256l359.296 359.296c22.016 22.016 57.792 22.08 79.872 0 22.08-22.08 22.016-57.792 0-79.872L551.936 272.448C529.856 250.432 494.144 250.432 472.064 272.448z',
          'path://M472.064 751.552 72.832 352.32c-22.08-22.08-22.08-57.792 0-79.872 22.016-22.016 57.792-22.08 79.872 0L512 631.744l359.296-359.296c22.016-22.016 57.792-22.08 79.872 0 22.08 22.08 22.016 57.792 0 79.872l-399.232 399.232C529.856 773.568 494.144 773.568 472.064 751.552z',
        ],
      },
      pageButtonPosition: 'end', // 翻页的位置。'start':控制块在左或上,end控制块在右或下。
      pageIconColor: '#29bca8', // 可以点击的翻页按钮颜色
      pageIconInactiveColor: '#7f7f7f', // 禁用的按钮颜色
      pageIconSize: 14, //这当然就是按钮的大小
      formatter: function(name) {
        let showNum
        let percentage
        for (var i = 0; i < listSummary.length; i++) {
          if (listSummary[i].name == name) {
            showNum = listSummary[i].value
            if (lejibaoxiuTotals) {
              // 计算百分比
              percentage =((listSummary[i].value /lejibaoxiuTotals) *100).toFixed(2) + '%'
            } else {
              percentage = ''
            }
          }
        }
        return `{name| ${name.length > 5 ? name.slice(0, 5) + '...' : name}} | {val| ${percentage}}  {numNum| ${showNum}}`
      },
    },
    series: [{
      type: 'pie',
      // 饼粗的大小
      radius: ['44%', '60%'],
      // 图形展示的位置
      center: ['30%', 'center'],
      avoidLabelOverlap: false,
      itemStyle: {
        borderRadius: 0,
        borderColor: '#fff',
        borderWidth: 2,
      },
      label: {
        show: false,
        position: 'center',
      },
      // emphasis 不展示中间的文字
      labelLine: {
        show: false,
      },
      data: listSummary, //[{name:'xx',value:'x'}]
    }, ],
    title: {
      text: lejibaoxiuTotals ? lejibaoxiuTotals : '', //展示的总数据
      left: '27%',
      top: '47%',
      textStyle: {
        color: '#031f2d',
        fontSize: 20,
        align: 'center',
      },
    },
  }
  // 使用刚指定的配置项和数据显示图表。
  myChart.setOption(option)
</script>
  </body>
</html>


尾声


如果你觉得我写的还不错的话


关注我或者给我点赞打赏


这是我写下去的动力


相关文章
|
3月前
|
JSON JavaScript 定位技术
vue中使用echarts实现省市地图绘制,根据数据显示省市天气图标及温度信息
vue中使用echarts实现省市地图绘制,根据数据显示省市天气图标及温度信息
432 1
|
4月前
|
JavaScript 定位技术
echarts地图数据信息流向图效果
本文介绍了如何使用 ECharts 创建一个地图数据信息流向图效果,包括设置地理坐标、线条动画和流向图的实现方法,并通过 Vue.js 封装了一个可重用的 ECharts 地图组件。
228 23
echarts地图数据信息流向图效果
|
3月前
|
JavaScript API
Echarts中单独为每个legend图例设置样式-根据数据正负显示不同样式
通过上述方法,我们便能够在ECharts中根据数据的正负为每个图例项设置不同的样式,增强了图表的可读性和表现力。这种方法虽然略显间接,但不失为一种灵活的解决方案。
421 2
|
3月前
|
JSON JavaScript 前端开发
vue中使用echarts实现省市地图绘制,根据数据在地图上显示柱状图信息,增加涟漪特效动画效果
vue中使用echarts实现省市地图绘制,根据数据在地图上显示柱状图信息,增加涟漪特效动画效果
930 0
|
5月前
|
JavaScript 数据可视化 BI
echarts的使用 超好用的报表制作、数据的图形化展示
您提供的链接是关于echarts使用的博客文章,它介绍了如何使用echarts进行数据的图形化展示,包括制作报表和图表。echarts是一个强大的数据可视化工具,能够创建折线图、柱状图、饼图等多种图表类型。文章还提供了一个Demo演示和项目结构的图片,以及官网链接供读者参考。
echarts的使用 超好用的报表制作、数据的图形化展示
|
5月前
|
XML SQL JavaScript
在vue页面引入echarts,图表的数据来自数据库 springboot+mybatis+vue+elementui+echarts实现图表的制作
这篇文章介绍了如何在Vue页面中结合SpringBoot、MyBatis、ElementUI和ECharts,实现从数据库获取数据并展示为图表的过程,包括前端和后端的代码实现以及遇到的问题和解决方法。
在vue页面引入echarts,图表的数据来自数据库 springboot+mybatis+vue+elementui+echarts实现图表的制作
|
5月前
|
前端开发 数据可视化 JavaScript
【揭秘神器】如何用Pyecharts轻松召唤出Echarts?只需几行Python代码,让你的数据瞬间生动起来!
【8月更文挑战第21天】Pyecharts是一款基于Python的图表生成库,利用Echarts强大的JavaScript可视化能力,让开发者无需编写前端代码即可在Python环境中创建美观图表。本文通过实例演示如何安装Pyecharts并生成一个展示城市气温分布的柱状图,包括基本图表生成及自定义样式设置,如颜色调整、图例显示等,最终将图表嵌入HTML文件展示,适合各水平开发者快速掌握数据可视化技能。
72 0
|
6月前
|
小程序 前端开发
【微信小程序-原生开发】实用教程22 - 绘制图表(引入 echarts,含图表的懒加载-获取到数据后再渲染图表,多图表加载等技巧)
【微信小程序-原生开发】实用教程22 - 绘制图表(引入 echarts,含图表的懒加载-获取到数据后再渲染图表,多图表加载等技巧)
344 0
|
6月前
echarts 提示框异步获取数据 —— formatter 异步回调函数的使用
echarts 提示框异步获取数据 —— formatter 异步回调函数的使用
189 0
|
6月前
echarts 数据格式化
echarts 数据格式化
58 0

热门文章

最新文章