關(guān)于做angular4引入echarts圖表

注意:該echarts版本為v3.0.0 ngx-echarts版本v2.1.0angular版本為v6.0.0以下本文下面采用最新版本的 echarts4.1.0ngx-echarts3.1.0angular6.0.0最新的和2.1.0用法變化不大霎冯。就是添加了些API

案例

1.安裝ngx-echarts

npm install echarts --save

npm install ngx-echarts --save


2.在項目中引入echarts

在項目包配置文件中引入js腳本

//angular-cli.json文件

{
    "apps": [{
        "scripts":[
            "../node_modules/echarts/dist/echarts.min.js",
            "../node_modules/echarts/map/js/china.js",
            "../node_modules/echarts/dist/extension/bmap.js"
        ]
    }]
}

3.使用

echarts.module.ts
import { NgModule } from '@angular/core';
import { EchartsComponent } from './echarts/echarts.component';
import { AngularEchartsModule } from 'ngx-echarts';

@NgModule({
  imports: [
    AngularEchartsModule
  ],
  declarations: [EchartsComponent],
})
export class EchartsModule { }

echarts.component.ts
import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'app-echarts',
  templateUrl: './echarts.component.html',
  styleUrls: ['./echarts.component.scss']
})
export class EchartsComponent implements OnInit {
  showloading:boolean = true;

  constructor() { 
    
    setTimeout(()=> {
      this.showloading = false;
    }, 3000);
  }

  ngOnInit() {
  }

  chartOption = {
    title: {
      text: '堆疊區(qū)域圖'
    },
    tooltip: {
      trigger: 'axis'
    },
    legend: {
      data: ['郵件營銷', '聯(lián)盟廣告', '視頻廣告', '直接訪問', '搜索引擎']
    },
    toolbox: {
      feature: {
        saveAsImage: {}
      }
    },
    grid: {
      left: '3%',
      right: '4%',
      bottom: '3%',
      containLabel: true
    },
    xAxis: [
      {
        type: 'category',
        boundaryGap: false,
        data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
      }
    ],
    yAxis: [
      {
        type: 'value'
      }
    ],
    series: [
      {
        name: '郵件營銷',
        type: 'line',
        stack: '總量',
        areaStyle: { normal: {} },
        data: [120, 132, 101, 134, 90, 230, 210]
      },
      {
        name: '聯(lián)盟廣告',
        type: 'line',
        stack: '總量',
        areaStyle: { normal: {} },
        data: [220, 182, 191, 234, 290, 330, 310]
      },
      {
        name: '視頻廣告',
        type: 'line',
        stack: '總量',
        areaStyle: { normal: {} },
        data: [150, 232, 201, 154, 190, 330, 410]
      },
      {
        name: '直接訪問',
        type: 'line',
        stack: '總量',
        areaStyle: { normal: {} },
        data: [320, 332, 301, 334, 390, 330, 320]
      },
      {
        name: '搜索引擎',
        type: 'line',
        stack: '總量',
        label: {
          normal: {
            show: true,
            position: 'top'
          }
        },
        areaStyle: { normal: {} },
        data: [820, 932, 901, 934, 1290, 1330, 1320]
      }
    ]
  }

  Baroptions = {
    tooltip: {
      trigger: 'item',
      formatter: "{a} <br/>: {c} (vhp0tao%)"
    },
    legend: {
      orient: 'vertical',
      x: 'left',
      data: ['直達(dá)', '營銷廣告', '搜索引擎', '郵件營銷', '聯(lián)盟廣告', '視頻廣告', '百度', '谷歌', '必應(yīng)', '其他']
    },
    series: [
      {
        name: '訪問來源',
        type: 'pie',
        selectedMode: 'single',
        radius: [0, '30%'],

        label: {
          normal: {
            position: 'inner'
          }
        },
        labelLine: {
          normal: {
            show: false
          }
        },
        data: [
          { value: 335, name: '直達(dá)', selected: true },
          { value: 679, name: '營銷廣告' },
          { value: 1548, name: '搜索引擎' }
        ]
      },
      {
        name: '訪問來源',
        type: 'pie',
        radius: ['40%', '55%'],

        data: [
          { value: 335, name: '直達(dá)' },
          { value: 310, name: '郵件營銷' },
          { value: 234, name: '聯(lián)盟廣告' },
          { value: 135, name: '視頻廣告' },
          { value: 1048, name: '百度' },
          { value: 251, name: '谷歌' },
          { value: 147, name: '必應(yīng)' },
          { value: 102, name: '其他' }
        ]
      }
    ]
  }



  linkoption = {
    title: {
      text: '懶貓今日訪問量'
    },
    color: ['#3398DB'],
    //氣泡提示框诚亚,常用于展現(xiàn)更詳細(xì)的數(shù)據(jù)
    tooltip: {
      trigger: 'axis',
      axisPointer: { // 坐標(biāo)軸指示器赘艳,坐標(biāo)軸觸發(fā)有效
        type: 'shadow' // 默認(rèn)為直線匾七,可選為:'line' | 'shadow'
      }
    },
    toolbox: {
      show: true,
      feature: {
        //顯示縮放按鈕
        dataZoom: {
          show: true
        },
        //顯示折線和塊狀圖之間的切換
        magicType: {
          show: true,
          type: ['bar', 'line']
        },
        //顯示是否還原
        restore: {
          show: true
        },
        //是否顯示圖片
        saveAsImage: {
          show: true
        }
      }
    },
    grid: {
      left: '3%',
      right: '4%',
      bottom: '3%',
      containLabel: true
    },
    xAxis: [{
      type: 'category',
      data: [21231,1212,21231,3213],
      axisTick: {
        alignWithLabel: true
      },
      axisLabel: {
        interval: 0,
        rotate: 20
      },
    }],
    yAxis: [{
      name: "懶貓今日訪問量",
      type: 'value'
    }],
    series: [{
      name: '今日訪問次數(shù)',
      type: 'bar',
      barWidth: '60%',
      label: {
        normal: {
          show: true
        }
      },
      data:[21231,1212,21231,3213]
    }]
  }


  datamapvalue = [
       {name: '海門', value: [121.15,31.89,9]},
       {name: '鄂爾多斯', value: [109.781327,39.608266,12]},
       {name: '招遠(yuǎn)', value: [120.38,37.35,12]},
       {name: '舟山', value: [122.207216,29.985295,12]},
       {name: '齊齊哈爾', value: [123.97,47.33,14]},
       {name: '鹽城', value: [120.13,33.38,15]},
       {name: '赤峰', value: [118.87,42.28,16]},
       {name: '青島', value: [120.33,36.07,18]},
       {name: '乳山', value: [121.52,36.89,18]},
       {name: '金昌', value: [102.188043,38.520089,19]}
   ];


  mapoption = {
    backgroundColor: '#404a59',
    title: {
      text: '全國主要城市空氣質(zhì)量',
      subtext: 'data from PM25.in',
      sublink: 'http://www.pm25.in',
      left: 'center',
      textStyle: {
        color: '#fff'
      }
    },
    tooltip: {
      trigger: 'item'
    },
    legend: {
      orient: 'vertical',
      y: 'bottom',
      x: 'right',
      data: ['pm2.5'],
      textStyle: {
        color: '#fff'
      }
    },
    geo: {
      map: 'china',
      label: {
        emphasis: {
          show: false
        }
      },
      roam: true,
      itemStyle: {
        normal: {
          areaColor: '#323c48',
          borderColor: '#111'
        },
        emphasis: {
          areaColor: '#2a333d'
        }
      }
    },
    series: [
      {
        name: 'pm2.5',
        type: 'scatter',
        coordinateSystem: 'geo',
        data: this.datamapvalue,
        symbolSize: function (val) {
          return val[2] / 10;
        },
        label: {
          normal: {
            formatter: '倦踢',
            position: 'right',
            show: false
          },
          emphasis: {
            show: true
          }
        },
        itemStyle: {
          normal: {
            color: '#ddb926'
          }
        }
      },
      {
        name: 'Top 5',
        type: 'effectScatter',
        coordinateSystem: 'geo',
        data: this.datamapvalue,
        symbolSize: function (val) {
          return val[2] / 10;
        },
        showEffectOn: 'render',
        rippleEffect: {
          brushType: 'stroke'
        },
        hoverAnimation: true,
        label: {
          normal: {
            formatter: '',
            position: 'right',
            show: true
          }
        },
        itemStyle: {
          normal: {
            color: '#f4e925',
            shadowBlur: 10,
            shadowColor: '#333'
          }
        },
        zlevel: 1
      }
    ]
  }

}


補(bǔ)充


echarts.component.html
    <div echarts [options] = "chartOption" [loading]="showloading" class="demo-chart"></div>
    <div echarts [options] = "Baroptions" [loading]="showloading" class="demo-chart"></div>
    <div echarts [options] = "linkoption" [loading]="showloading" class="demo-chart"></div>
    <div echarts [options] = "mapoption" [loading]="showloading" class="demo-chart"></div>

關(guān)于api文檔

[options]:與官方演示網(wǎng)站的選項相同
[dataset]:您可以忽略“options”中的“data”屬性氓轰,并用于dataset綁定系列數(shù)據(jù)尸执。
[loading]:布爾屬性家凯。當(dāng)您的數(shù)據(jù)未準(zhǔn)備好時,使用它來切換加載動畫的echarts如失。
theme:用它來初始化具有主題的echarts绊诲。你需要在主題文件.angular-cli.json或index.html。例如褪贵,如果我們要dark.js在Echarts主題頁面中使用:<div echarts theme = "dark" class = "demo-chart" [options] = "chartOptions"></div>這樣我們就使用成功dark主題了掂之。
(chartInit)它暴露了echartsInstance 'chartInit'事件。所以脆丁,你可以直接調(diào)用的API一樣:resize()世舰,showLoading()


例如

html


<div echarts class="demo-chart" [options]="chartOptions" (chartInit)="onChartInit($event)"></div>

ts

onChartInit(ec) {
  this.echartsIntance = ec;
}

resizeChart() {
  if (this.echartsIntance) {
    this.echartsIntance.resize();
    this.echartsIntance.showLoading();
  }
}

后續(xù)在更新吧! 畢竟上班時間搞這個 (?????)

最新版本的 echarts4.1.0ngx-echarts3.1.0angular6.0.0

最新版API文檔

輸入 類型 默認(rèn)值 注釋
[options] object null 它與官方演示站點中的選項相同槽卫。
[merge] object null 您可以使用它來更新部分內(nèi)容options跟压,尤其是在需要更新圖表數(shù)據(jù)時。事實上歼培,價值merge將用于echartsInstance.setOption()notMerge = false震蒋。因此茸塞,您可以參考ECharts文檔以獲取詳細(xì)信息。
[loading] boolean false 當(dāng)數(shù)據(jù)未準(zhǔn)備好時查剖,使用它來切換echarts加載動畫钾虐。
[autoResize] boolean true 當(dāng)容器的寬度發(fā)生變化時,圖表將自動調(diào)整大小笋庄。
[initOpts] object null [initOpts]將使用的值echarts.init()效扫。它可能包含devicePixelRatiorenderer直砂,widthheight性質(zhì)菌仁。有關(guān)詳細(xì)信息,請參閱ECharts文檔哆键。
[theme] string null 使用它來初始化主題echarts掘托。您需要將主題文件包含在angular-cli.json其他模塊解析器中。
[loadingOpts] object null 輸入對象以自定義加載樣式籍嘹。有關(guān)詳細(xì)信息,請參閱ECharts文檔弯院。

輸出事件
chartClick:它會發(fā)出相同params的'click'事件
chartDblClick:它會發(fā)出相同params的'dblclick'事件
chartMouseDown:它會發(fā)出相同params的'mousedown'事件
chartMouseUp:它會發(fā)出相同params的'mouseup'事件
chartMouseOver:它會發(fā)出相同params的'mouseover'事件
chartMouseOut:它會發(fā)出相同params的'mouseout'事件
chartGlobalOut:它會發(fā)出相同params的'globalout'事件
chartContextMenu:它發(fā)出同樣params的'contextmenu'事件(從v1.2.1開始)
chartDataZoom:它發(fā)出相同params的'dataZoom'事件(感謝averhaegen)

Service服務(wù)

NgxEchartsService 是全局 echarts 對象的包裝器辱士。您可以直接獲取本機(jī)echarts對象或使用包裝器方法。例如:

import {NgxEchartsService} from 'ngx-echarts';

//...
constructor(private es: NgxEchartsService) {}

ngOnInit() {
  const echarts = this.es.echarts;
  echarts.registerMap('HK', HK_GEO_JSON);
  // Or you can:
  // this.es.registerMap('HK', HK_GEO_JSON);
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末听绳,一起剝皮案震驚了整個濱河市颂碘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌椅挣,老刑警劉巖头岔,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異鼠证,居然都是意外死亡峡竣,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門量九,熙熙樓的掌柜王于貴愁眉苦臉地迎上來适掰,“玉大人,你說我怎么就攤上這事荠列±嗬耍” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵肌似,是天一觀的道長费就。 經(jīng)常有香客問我,道長川队,這世上最難降的妖魔是什么力细? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任睬澡,我火速辦了婚禮,結(jié)果婚禮上艳汽,老公的妹妹穿的比我還像新娘猴贰。我一直安慰自己,他們只是感情好河狐,可當(dāng)我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布米绕。 她就那樣靜靜地躺著,像睡著了一般馋艺。 火紅的嫁衣襯著肌膚如雪栅干。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天捐祠,我揣著相機(jī)與錄音碱鳞,去河邊找鬼。 笑死踱蛀,一個胖子當(dāng)著我的面吹牛窿给,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播率拒,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼崩泡,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了猬膨?” 一聲冷哼從身側(cè)響起角撞,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎勃痴,沒想到半個月后谒所,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡沛申,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年劣领,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片污它。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡剖踊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出衫贬,到底是詐尸還是另有隱情德澈,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布固惯,位于F島的核電站梆造,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜镇辉,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一屡穗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧忽肛,春花似錦村砂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至罕模,卻和暖如春评腺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背淑掌。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工蒿讥, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人抛腕。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓芋绸,卻偏偏與公主長得像,于是被迫代替她去往敵國和親担敌。 傳聞我的和親對象是個殘疾皇子侥钳,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,486評論 2 348

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