Vue 中 Echarts绘图 在一个圆环图或多个圆环图中间插入图片 插入文字(考虑到浏览器大小兼容问题)

之前一直掉进这个坑,没有跳出来,导致自己在这个问题上搞了很久,今天把这个坑写出来,避免大家都去踩这个坑啊~

 在Vue项目结构中,如果引入图片的url不成功,记住,请一定要试一试在路径外加上 require() !!! 

 也就是: require(../../images/test.png)

恩~~~现在开始讲一下具体的实现:

(1)首先看一下我们要实现第一种只有一个圆环图中间插入图片,插入文字的效果(文字和图片都要居中):

 

话不多说,接下来是代码:

在Echarts绘图中插入graphic:

graphic: {
     elements: [{
            type: 'image',
            style: {
                image: require('../../images/test.png'),
                width: 25,
                height: 30
                   },
            left: 'center',
            top: '70'
            },
            {
             type: 'text',
             left: 'center', // 相对父元素居中
             top: '110',  // 相对父元素上下的位置
             style: {
                 fill: '#333333',
                  text: ['总人数'],
                  font: '12px Arial Normal',
                     }
            }]
          },

搞定!!!现在看起来还挺简单的,当时还是弄了老久咯~毕竟初出茅庐嘛嘻嘻~~~

(2)第二种是同时画了两个图,中间插入图片和文字的效果:

最开始以为也可以采用graphic的方法,但是后面试了一下不行呀,我要实现的是每个圆环对应不同的图片,唉呀妈呀脑瓜疼呀脑瓜疼,然后反复的在百度上搜索,在echarts官网上看实例看官网(顺便插播一下很好用的Echarts Gallery,上面有很多的Echarts图都可以参考总有一款适合你滴,而且可以直接修改看效果,果然还是挺强大的呀,佩服之心油然而生:)链接http://gallery.echartsjs.com/explore.html#sort=rank~timeframe=all~author=all),终于功夫不负有心人呀,在不断的摸爬滚打中总算是守得云开见月明啦!!!!!

先来看一看我们实现的效果图:

 

在这里插播说明一下如何在一个图中绘制两个或者更多个圆环图,就是series写成数组的形式,每一个图相当于是一个对象,分别绘制,在调一下位置就可以。

重点来了!!!

那就是如何每一个圆环图的中间插入对应的不同的图片呢,我找到的一种解决办法,就是在series data里面追加一个专门放图片和文字的对象,代码放出来:

 

series: [
     {
         name: '消费情况',
         type: 'pie',
         radius: ['24%', '35%'],
         center: ['25%', '45%'],
         avoidLabelOverlap: false,
         hoverAnimation: true,
         label: {
             normal: {
             formatter: function(value){
                  var arr = [
                      value.data.name,
                      '¥' + '{b| }' +value.data.value
                             ].join('\n')
                    return arr
             },
              rich: {
                   b: {
                      fontSize: 14,
                      lineHeight: 33
                      },
                    }
               },
                            },
              labelLine: {normal: {show: true}},
              data: [
                  {value: self.one_data1,name: '1啊'},
                  {value: self.one_data2,name: '2啊'},
                  {value: self.one_data3,name: '3啊'},
                  {value: self.one_data4,name: '4啊'},
                  {
                     tooltip: {
                           show:false,     //取消鼠标放上去时会显示信息的样式
                           trigger: 'item',
                     },
                     label: {
                         normal: {
                              formatter: [
                                   '{c| }',
                                    '{b|总消费}',
                                          ].join('\n'),
                               position: 'center',  //让文字居中
                               show: true,
                               rich: {
                               b:{
                                    fontSize: '14px',
                                    fontWeight: 'bold',
                                    color: '#333333',
                                    lineHeight:'26'
                               },
                               c: {
                                    backgroundColor: {
                                        image: require('../../images/总消费额.png'),
                                                    },
                                     height: 34,
                                     width:35,
                                     left:'center'  //让图片居中
                                    },
                               }} }},
                       ]
         },
         {
            name: '消费情况',
            type: 'pie',
            radius: ['24%', '35%'],
            center: ['75%', '45%'],
            avoidLabelOverlap: false,
            hoverAnimation: true,
            label: {
                 normal: {
                     formatter: function(value){
                          var arr = [
                                value.data.name,
                                '¥' + '{b| }' + value.data.value
                                     ].join('\n')
                            return arr
                     },
                     rich: {
                         b: {
                           lineHeight: 33
                             },
                            }
                           },
             },
             labelLine: {
                   normal: {show: true}
             },
             data: [
                 {value: self.two_data1, name: '1啊'},
                 {value: self.two_data2, name: '2啊'},
                 {value: self.two_data3, name: '3啊'},
                 {value: self.two_data4, name: '4啊'},
                 {
                     name:'总消费',
                     tooltip: {  
                         show:false,    //取消鼠标放上去时会显示信息的样式
                         trigger: 'item',
                     },
                     label: {
                          normal: {
                          formatter: [
                               '{c| }',
                                '{b|当月消费}',
                          ].join('\n'),
                          position: 'center',   //让文字居中
                          show: true,
                          rich: {
                               b: {
                                  fontSize: '14px',
                                  fontWeight: 'bold',
                                  color: '#333333',
                                  lineHeight:'26'
                                },
                                 c: {
                                    backgroundColor: {
                                        image: require('../../images/消费.png'),
                                    },
                                 height: 30,
                                 width:30,
                                 left:'center',    //让图片居中
                           },
                        }
                  }}},]
     }
  ]

 

这样写图片和文字就可以定位到各自的圆环中,但是有一个问题就是,这样的图片和文字会附带上鼠标放上去就有文字提示的效果,所以这个的解决办法就是将tooltip:设置显示show为false就可以啦~(代码中有标注!!)

 

这是一个程序媛在最近用echarts绘图中用到的问题,因为不仅要简单的考虑绘图,还要同时考虑浏览器大小的兼容问题,百度了很多,不断的修改尝试写出来的,这个过程是十分的掉头发的,但是结果让人觉得掉的头发都是有价值的!啊哈哈哈!有什么不对的地方也请各位大佬多多指教哦~~
                           
                         

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章