echarts 小程序使用

项目是原生小程序,现在要用图表类的展示数据。
思考问题:
1.自己写肯定不行,canvas花半天得,还有交互什么的,pass
2.echarts是大家都知道的,另外还有蚂蚁出的antV,有专门针对移动端的。蚂蚁的交互和色彩做的都很不错,echarts的色彩搭搭配相对antv就有点不太好看了
echarts链接:https://echarts.apache.org/examples/zh/index.html
antv链接:https://antv.vision/zh
3.我最后是用了echarts,没用antv。因为antv暂时不支持饼图的指示线
4.小程序引用echarts有2种

小程序插件:

      小程序开发者可在”小程序管理后台-设置-第三方服务-插件管理“中,根据AppID查找需要的插件,并申请使用。插件开发者在24小时内通过后,小程序开发者可在小程序内使用该插件。
      在app.json添加
"plugins": {
   "echarts": {
     "version": "2.1.1",
     "provider": "wx1db9e5ab1149ea03"
   }
 }

echarts组件包:https://github.com/ecomfe/echarts-for-weixin

5.我最终选择了插件,原因:插件和组件包都会占用小程序的大小,插件相对来说引用方便,插件会自动更新。组件包会随着git版本的提交,要维护组件包,有点麻烦。
6.插件使用方法:
app.json引入插件

"plugins": {
    "echarts": {
      "version": "2.1.1",
      "provider": "wx1db9e5ab1149ea03"
    }
  }

使用图表的页面的index.json文件引入该插件,我用的是echarts插件全部的版本,按需引入的暂时没搞懂,搞懂后更新文章

{
  "usingComponents": {
    "chart": "plugin://echarts/chart"
  }
}

index.wxml中加入代码,记得给图表添加宽高,不然显示不出来

<chart chart-class="chart" style="heigth: 500rpx" option="{{ channelOption }}" />

7.我用到的图表类型有:环形图,饼图,分组柱状图

环形图的options:

const total = 600
    const lala = '50%'
     // 资产管理
    const assetsOption = {
      title: {
        zlevel: 0,
        text: [
          '{value|' + total + '台}',
          '{name|已投放}'
        ].join('\n'),
        top: 'center',
        left: '48.5%',
        textAlign: 'center',
        textStyle: {
          rich: {
            value: {
              color: '#474747',
              fontSize: 16,
              fontWeight: 'bold',
              // lineHeight: 40,
            },
            name: {
                color: '#666666',
                fontSize: 14,
                lineHeight: 20
            },
          },
          color: '#696969'
        },
        subtext: `{value|巡检率${lala}}`,
        subtextStyle: {
          rich: {
            value: {
              color: '#666666',
              fontSize: 12,
              backgroundColor: 'rgba(255,255,255,0.6)',
              width: 85,
              height: 30, 
              borderRadius: 5,
            }
          }
        }
      },
      tooltip: {
        trigger: 'item'
      },
      // legend: {  
      //   // top: '0%',
      //   left: 'center'
      // },
      color:['#13c2c2', '#5a8ef7'], // 指定环的颜色
      series: [
        {
          // name: 'Access From',
          type: 'pie',
          left: 'center',
          radius: ['35%', '70%'], // 内半径,外半径
          itemStyle:{ 
            normal:{ 
              label:{ 
                show: true, 
                formatter: '{b}:{c}台' 
              }, 
              labelLine :{show:true} 
            } 
          },
          avoidLabelOverlap: false,
          label: {
            show: true,
            position: 'outside'
          },
          emphasis: {
            label: {
              show: true,
              fontSize: '12',
              fontWeight: 'bold'
            }
          },
          labelLine: {
            show: true
          },
          showEmptyCircle: true,
          data: [
            { value: 200, name: '已巡检' },
            { value: 400, name: '未巡检' },
          ]
        }
      ]
    }
image.png

饼图options:

const channelOption = {
      title: {
        // text: 'Referer of a Website',
        // subtext: 'Fake Data',
        left: 'center',
        textStyle: {
          color: '#999',
          fontWeight: 'normal',
          fontSize: 14
        }
      },
      tooltip: {
        trigger: 'item'
      },
      legend: {
        orient: 'horizontal',
        // left: 'left'
      },
      series: [
        {
          // name: 'Access From',
          type: 'pie',
          radius: '50%',
          itemStyle: {
            borderColor: '#fff',
            borderWidth: 1
          },
          data: [
            {name: '测试1', value: 10},
            {name: '测试2', value: 20}
          ],
          emphasis: {
            itemStyle: {
              shadowBlur: 10,
              shadowOffsetX: 0,
              shadowColor: 'rgba(0, 0, 0, 0.5)'
            }
          },
          label: {
            alignTo: 'edge', // 觉得指示线太长的看这里
            formatter: '{name|{b}}\n{value|{c}}',
            minMargin: 5,
            edgeDistance: 10,
            lineHeight: 15,
            rich: {
              value: {
                fontSize: 10,
                color: '#999'
              }
            },
            position: 'outer'
          },
          labelLine: {
            normal: {
              // length: 100,
              // length2: 0,
              maxSurfaceAngle: 80,  // 指示线的弯曲程度,一般设置0-90之间最为合适
              smooth: 0.5,  // 指示线的平滑程度,0-1之间,数值越大越平滑
            }
          },
        }
      ]
    }
image.png

柱状图options:

const productOption = {
      legend: {},
      tooltip: {},
      dataset: {
        source: productData
      },
      dataZoom : [ // 移动端手机宽度有限,添加横向滑动
        {
          type: 'slider',
          show: true,
          start: 0,
          end: 30,
          xAxisIndex: [0],
        },
      ],
      xAxis: { 
        type: 'category',
        axisLabel:{
          interval: 0,
          rotate:40
        },
        data: xTitle
      },
      yAxis: {},
      // Declare several bar series, each will be mapped
      // to a column of dataset.source by default.
      series: [
        { 
          type: 'bar',
          barWidth: 10,
          itemStyle: {
            normal: {
              color: '#1890ff'
            }
          }
        }, 
        { 
          type: 'bar',
          barWidth: 10,
          itemStyle: {
            normal: {
              color: '#2fc25b'
            }
          }
        }
      ]
    }
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,084评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,623评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,450评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,322评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,370评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,274评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,126评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,980评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,414评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,599评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,773评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,470评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,080评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,713评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,852评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,865评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,689评论 2 354