實現(xiàn) ECharts 圖表自適應(yīng)

數(shù)據(jù)可視化的需求越來越多,圖表自動生成技術(shù)也日漸成熟

ECharts

ECharts 的功能十分強(qiáng)大,可以生成多種形式的圖表,配置項十分靈活,可以根據(jù)實際需求自由定制
官方文檔: https://www.echartsjs.com/examples/

但是ECharts繪制圖表時無法獲取到clientWidth,而 parseInt(stl.width, 10)) 將width: 100%;轉(zhuǎn)為100,所以計算出的圖表寬度為100px

所以設(shè)置width:100%對echarts是不起作用的

解決方法

思路:mounted時獲取window對象的寬高,結(jié)合實際需要對window的寬高進(jìn)行計算弯汰,然后將寬高經(jīng)過計算賦給需要渲染圖表的DOM節(jié)點瓶摆,這樣一來echarts節(jié)點渲染之前就獲得了具體的寬高查牌,大小就可以適應(yīng)不同的屏幕了。

具體實現(xiàn)函數(shù)如下:

<template>
 <div id="main" ref="mychart"></div>
</template>
<script>
export default {
 mounted: function () {
            this.loadBugChart();
 },
 methods: {
  loadBugChart() {
                var domBugChart= this.$refs.mychart; //獲取DOM節(jié)點
                //自適應(yīng)寬高
                var bugChartContainer = function () {
                    if (domBugChart) {
                        domBugChart.style.width = 66+"vw";
                        domBugChart.style.height = 70+"vh";
                        // 相當(dāng)于
                        // domBugChart.style.width = window.innerWidth * 0.66 + 'px';
                        // domBugChart.style.height = window.innerHeight * 0.7 + 'px';
                    }

                };
                bugChartContainer();
                var bugChart = echarts.init(domBugChart);
                let option = {...};
                bugChart.setOption(option);
            }
     }
}
</script>

這樣做有一個缺點寂祥,頁面大小改變之后需要刷新顷啼,刷新之后圖表自適應(yīng)踏枣,不過實際使用中頁面適配屏幕后大小改變的應(yīng)用場景不多昌屉。

進(jìn)階版

echarts官方提供了獲取圖表寬高的API函數(shù) getWidth() getHeight()钙蒙,可以對其進(jìn)行操作,在自適應(yīng)的前提下间驮,設(shè)置圖表最小寬高

loadSheetChart() {
      var domSheetChart = this.$refs.sheetChart;
      this.sheetChart = echarts.init(domSheetChart);
      let width =
        this.sheetChart.getWidth() < 250 ? 250 : this.sheetChart.getWidth();
      let height = this.sheetChart.getHeight();
    },

使用官方API resize ()

    barChartLoad() {
      const barChart = echarts.init(document.getElementById('barChart'));
      barChart.setOption(this.barChartOption);
      window.onresize = function() {
        barChart.resize();
      };
    },

推薦躬厌,使用起來方便簡潔

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市竞帽,隨后出現(xiàn)的幾起案子扛施,更是在濱河造成了極大的恐慌,老刑警劉巖屹篓,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件疙渣,死亡現(xiàn)場離奇詭異,居然都是意外死亡堆巧,警方通過查閱死者的電腦和手機(jī)妄荔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谍肤,“玉大人啦租,你說我怎么就攤上這事』拇В” “怎么了篷角?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長系任。 經(jīng)常有香客問我恳蹲,道長虐块,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任阱缓,我火速辦了婚禮非凌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘荆针。我一直安慰自己敞嗡,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布航背。 她就那樣靜靜地躺著喉悴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪玖媚。 梳的紋絲不亂的頭發(fā)上箕肃,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天,我揣著相機(jī)與錄音今魔,去河邊找鬼勺像。 笑死,一個胖子當(dāng)著我的面吹牛错森,可吹牛的內(nèi)容都是我干的吟宦。 我是一名探鬼主播,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼涩维,長吁一口氣:“原來是場噩夢啊……” “哼殃姓!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起瓦阐,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤蜗侈,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后睡蟋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體踏幻,經(jīng)...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年戳杀,在試婚紗的時候發(fā)現(xiàn)自己被綠了该面。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,664評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡豺瘤,死狀恐怖吆倦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情坐求,我是刑警寧澤蚕泽,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站翘簇,受9級特大地震影響博秫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜思恐,卻給世界環(huán)境...
    茶點故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一荒吏、第九天 我趴在偏房一處隱蔽的房頂上張望敛惊。 院中可真熱鬧,春花似錦绰更、人聲如沸瞧挤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽特恬。三九已至,卻和暖如春徐钠,著一層夾襖步出監(jiān)牢的瞬間癌刽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工尝丐, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留显拜,地道東北人。 一個月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓爹袁,卻偏偏與公主長得像远荠,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子呢簸,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,554評論 2 349

推薦閱讀更多精彩內(nèi)容