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繪圖中用到的問題,因爲不僅要簡單的考慮繪圖,還要同時考慮瀏覽器大小的兼容問題,百度了很多,不斷的修改嘗試寫出來的,這個過程是十分的掉頭髮的,但是結果讓人覺得掉的頭髮都是有價值的!啊哈哈哈!有什麼不對的地方也請各位大佬多多指教哦~~
                           
                         

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