亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

使用antv替代Echarts實(shí)現(xiàn)數(shù)據(jù)可視化圖表詳解

 更新時(shí)間:2022年08月31日 08:46:31   作者:清歡bx  
這篇文章主要為大家介紹了使用antv替代Echarts實(shí)現(xiàn)數(shù)據(jù)可視化圖表詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言

技術(shù)永無(wú)止盡,多看看不同風(fēng)景

周一,還在愉快的為移動(dòng)端框架添磚加瓦中,主管就過(guò)來(lái)詢問(wèn)我,能騰出一周時(shí)間做些其他事情嗎,我有些詫異,這種語(yǔ)氣。問(wèn)了需要做什么嗎,原來(lái)是業(yè)務(wù)部門有個(gè)大數(shù)據(jù)圖表沒(méi)有多余的人做,需要我去支援一波,雖然有點(diǎn)拒絕,但主管發(fā)話了,只能安排。

之前做可視化圖表都是用echarts,原因是第一次用的是它,后來(lái)就習(xí)慣了,基本上都能滿足自己的業(yè)務(wù)需求,對(duì)于文檔也比較熟悉,用的人也多,遇到問(wèn)題就能快速的查到解決方案。有點(diǎn)不幸的是,這次客戶指名道姓只能采用阿里的antv,那我也就沒(méi)有第二個(gè)選擇了。

對(duì)于antv沒(méi)有太多的接觸,在它剛開源的時(shí)候,有去觀摩一下,很炫酷,相比于echarts更加好看,不過(guò)那時(shí)文檔沒(méi)那么全,示例也不是特別多,時(shí)至今日再去看,已經(jīng)很全面了,有多個(gè)不同場(chǎng)景系列,常用圖表的G2,數(shù)據(jù)關(guān)聯(lián)圖的G6,移動(dòng)端可視化的F2,以及專注于地圖的L7,當(dāng)然還有對(duì)于之前這些基礎(chǔ)圖表做進(jìn)一層封裝的plot系類,比如@antv/g2plot、@antv/l7plot。

這次的開發(fā)關(guān)于PC的,所以主要會(huì)涉及到G2,L7。在開發(fā)過(guò)程中的感受,使用起來(lái)挺簡(jiǎn)單的,但是有些屬性設(shè)置文檔沒(méi)有,需要從例子中去查找,然后網(wǎng)上關(guān)于它使用的文章也比較少,沒(méi)有echarts那么多,可能需要自己會(huì)時(shí)間去文檔和示例中自己找尋答案。

面積圖

折線圖是經(jīng)常使用并且比較容易的一種圖形,G2 中并沒(méi)有特定的圖表類型(柱狀圖、散點(diǎn)圖、折線圖等)的概念,用戶可以單獨(dú)繪制某一種類型的圖表,如餅圖,也可以繪制混合圖表,比如折線圖和柱狀圖的組合,折線圖和面積圖混合就可以實(shí)現(xiàn)如圖效果;

常用參數(shù)文檔

圖表

屬性說(shuō)明類型默認(rèn)值
container指定 chart 繪制的 DOM,可以傳入 DOM id,也可以直接傳入 dom 實(shí)例string | HTMLElement-
autoFit圖表是否自適應(yīng)容器寬高, 如果用戶設(shè)置了 height,那么會(huì)以用戶設(shè)置的 height 為準(zhǔn)booleanfalse
width圖表寬度number-
height圖表高度number-
padding圖表內(nèi)邊距'auto'|number |number[]'auto'

度量 scale

屬性說(shuō)明類型默認(rèn)值
min設(shè)置對(duì)應(yīng)坐標(biāo)系的最小值any-
max設(shè)置對(duì)應(yīng)坐標(biāo)系的最小值any-
range坐標(biāo)系的繪制范圍,一般不用修改[number,number][0, 1]
alias數(shù)據(jù)字段的顯示別名,一般用于字段對(duì)應(yīng)中文名稱設(shè)置string-
nice自動(dòng)調(diào)整 min、maxbooleanfalse

提示 tooltip

屬性說(shuō)明類型默認(rèn)值
showTitle是否展示 tooltip 標(biāo)題booleanfalse
sharedtrue 表示合并當(dāng)前點(diǎn)對(duì)應(yīng)的所有數(shù)據(jù)并展示,false 表示只展示離當(dāng)前點(diǎn)最逼近的數(shù)據(jù)內(nèi)容booleanfalse
showCrosshairs是否顯示 tooltips 輔助線。booleanfalse

坐標(biāo)系 axis

屬性說(shuō)明類型默認(rèn)值
line坐標(biāo)軸線的配置項(xiàng),null 表示不展示null | object-
tickLine坐標(biāo)軸刻度線線的配置項(xiàng),null 表示不展示null | object-
grid坐標(biāo)軸網(wǎng)格線的配置項(xiàng),null 表示不展示null | object-

chart.line(options)

用于繪制折線圖、曲線圖、階梯線圖等。

chart.area(options)

用于繪制區(qū)域圖(面積圖)、層疊區(qū)域圖、區(qū)間區(qū)域圖等。

geom.position()

配置 position 通道映射規(guī)則

示例:

// 數(shù)據(jù)結(jié)構(gòu): [{ x: 'A', y: 10, color: 'red' }]
geom.position('x*y');

geom.color()

配置圖表顏色

// 基礎(chǔ)顏色設(shè)置
geom.color('#1890ff');
// 漸變
geom.color("l(90) 0:#0b83de 1:#0c1c2d")

geom.shape()

圖形相關(guān)設(shè)置,文檔上的說(shuō)明不是很全,可以從圖表示例獲取相應(yīng)信息

屬性說(shuō)明
smooth用于折線圖平滑設(shè)置
<template>
  <div id="container"></div>
</template>
<script>
import { Chart } from "@antv/g2";
export default {
  mounted() {
    // 數(shù)據(jù)源
    const data = [
      { time: "8/1", value: 240 },
      { time: "8/10", value: 600 },
      { time: "8/20", value: 350 },
      { time: "8/31", value: 470 },
    ];
    // 初始化圖表,列出圖表屬性
    const chart = new Chart({
      container: "container",
      autoFit: true,
      height: 276,
      padding: [100, 20, 30, 40],
    });
    // 圖表關(guān)聯(lián)數(shù)據(jù)chart.position()方法決定的,在下面有設(shè)置chart.position("time*value")
    // 前面為x軸,所以 time 為 x 軸, value 為 y 軸
    chart.data(data);
    // 度量
    // x,y軸坐標(biāo)系是根據(jù)
    chart.scale({
      // y軸坐標(biāo)系設(shè)置
      value: {
        min: 0,
        nice: true,
        alias: "用戶",
      },
      // x軸坐標(biāo)系設(shè)置
      time: {
        range: [0, 1],
      },
    });
    // 提示信息
    chart.tooltip({
      // 是否顯示輔助線
      showCrosshairs: true,
      // 是否合并所有點(diǎn)展示
      shared: false,
    });
    // value 坐標(biāo)系設(shè)置
    chart.axis("value", {
      grid: null,
      tickLine: null,
    });
    // time 坐標(biāo)系設(shè)置
    chart.axis("time", {
      line: null,
      tickLine: null,
    });
    // 圖表繪制設(shè)置
    // 面積圖
    chart
      .area()
      .position("time*value")
      .color("l(90) 0:#0b83de 1:#0c1c2d")
      .shape("smooth");
    // 折線圖
    chart.line().position("time*value").color("#0b83de").shape("smooth");
    // 渲染圖表
    chart.render();
  },
};
</script>

柱狀圖

柱狀圖在日常數(shù)據(jù)分析中正常都會(huì)使用,也比較直觀,這邊我列了使用到的一些屬性,其他的跟上面的常用參數(shù)文檔是一致

數(shù)據(jù)標(biāo)簽 label

屬性說(shuō)明類型默認(rèn)值
offset相對(duì)數(shù)據(jù)點(diǎn)的偏移距離number-
offsetX相對(duì)于數(shù)據(jù)點(diǎn)在 X 方向的偏移距離number-
offsetY相對(duì)于數(shù)據(jù)點(diǎn)在 Y 方向的偏移距離number-
style文本圖形屬性樣式,設(shè)置顏色需要用 fillnumber-

chart.coordinate()

圖表坐標(biāo)系設(shè)置

屬性說(shuō)明類型默認(rèn)值
rotate配置旋轉(zhuǎn)度數(shù),使用弧度制number-
reflect沿 x 方向鏡像或者沿 y 軸方向映射x | y-
scale沿著 x 和 y 方向的縮放比率number, number-
transposex,y 軸置換,常用于條形圖和柱狀圖之間的轉(zhuǎn)換--

chart.interval(options)

用于繪制柱狀圖、直方圖、南丁格爾玫瑰圖、餅圖、條形環(huán)圖(玉缺圖)、漏斗圖等。

<template>
  <div id="container"></div>
</template>
<script>
import { Chart } from "@antv/g2";
export default {
  mounted() {
    // 數(shù)據(jù)源
    const data = [
      { type: "香蕉", value: 460 },
      { type: "蘋果", value: 600 },
      { type: "菠蘿", value: 390 },
      { type: "榴蓮", value: 205 },
    ];
    // 初始化圖表
    const chart = new Chart({
      container: "container",
      autoFit: true,
      height: 276,
      padding: [50, 60, 10, 60],
    });
    // 關(guān)聯(lián)數(shù)據(jù)
    chart.data(data);
    // 圖表關(guān)聯(lián)數(shù)據(jù)chart.position()方法決定的,在下面有設(shè)置chart.position("type*value")
    // 前面為x軸,所以 type 為 x 軸, value 為 y 軸
    // 設(shè)置 x 軸坐標(biāo)系
    chart.axis("type", {
      grid: null,
      tickLine: null,
      line: null,
    });
    // 設(shè)置 y 軸坐標(biāo)系
    chart.axis("value", {
      grid: null,
      label: null,
    });
    // 隱藏圖例
    chart.legend(false);
    // x,y 軸置換
    chart.coordinate().transpose();
    // chart.interval(options) 柱狀圖
    // geom.position() 配置 position 通道映射規(guī)則
    // geom.size 設(shè)置圖形大小
    // geom.color 設(shè)置圖形顏色
    // geom.label 數(shù)據(jù)標(biāo)簽設(shè)置
    chart
      .interval()
      .position("type*value")
      .size(12)
      .color("#678ef2")
      .label("value", {
        style: {
          fill: "#8d8d8d",
        },
        offset: 10,
      });
    chart.interaction("element-active");
    // 渲染圖形
    chart.render();
  },
};
</script>

地圖

antv文檔對(duì)于地圖的描述不是特別全,比如地圖等級(jí)viewLevel、地圖邊界設(shè)置、地圖顏色配置,這些都要結(jié)合實(shí)例慢慢摸索,我實(shí)現(xiàn)了比較常用的中國(guó)地圖,包含toolTip,以及省的散點(diǎn)圖,只要修改地圖等級(jí)viewLevel,配合相應(yīng)數(shù)據(jù)就能實(shí)現(xiàn)不同省市的散點(diǎn)圖了,大家可以舉一反三。

我這邊是采用@antv/l7plot,內(nèi)部就分裝了地圖相關(guān)繪制,如果采用是@antv/l7,它主要是根據(jù)請(qǐng)求地圖路徑坐標(biāo)數(shù)據(jù)請(qǐng)求繪制,數(shù)據(jù)也挺龐大的,會(huì)比較麻煩一些。

這邊就不放圖了,可以在Github運(yùn)行查看

地圖容器配置項(xiàng) map

屬性說(shuō)明類型默認(rèn)值
type地圖底圖類型,amap: 高德地圖,mapbox: Mapbox 地圖stringamap
center初始中心經(jīng)緯度number[][0, 0]
pitch初始傾角number0
zoom初始縮放層級(jí)number0
style內(nèi)置樣式: dark: 黑暗,light: 明亮,normal: 普通,blank: 無(wú)底圖stringdark
logo是否顯示 logobooleantrue

地圖等級(jí) viewLevel

屬性說(shuō)明
level層級(jí) 國(guó)家;"country"、省份:"province"、市:"city"、縣:"district"
adcode層級(jí)編碼 中國(guó);100000、浙江?。?quot;330000"、杭州市:"330100"、西湖區(qū):"330106"
<template>
  <div id="container"></div>
</template>
<script>
import { Choropleth } from "@antv/l7plot";
// 地圖數(shù)據(jù)
import data from "../data/userMap";
export default {
  mounted() {
    // 初始化地圖
    // eslint-disable-next-line no-unused-vars
    const map = new Choropleth("container", {
      // 地圖容器配置
      map: {
        type: "mapbox",
        style: "blank",
        center: [120.19382669582967, 30.258134],
        zoom: 3,
        pitch: 0,
        logo: false,
      },
      // 關(guān)聯(lián)數(shù)據(jù)
      source: {
        data: data,
        joinBy: { sourceField: "code" },
      },
      // 地圖等級(jí)
      viewLevel: {
        level: "country",
        adcode: 100000,
      },
      // 根據(jù)容器寬高自定義圖表
      autoFit: true,
      // 設(shè)置地圖顏色
      color: {
        field: "value",
        value: ["#B8E1FF", "#7DAAFF", "#3D76DD", "#0047A5", "#001D70"],
        scale: { type: "quantile" },
      },
      // 邊框
      chinaBorder: {
        // 國(guó)界
        national: null,
        // 爭(zhēng)議
        dispute: { color: "#ccc", width: 1, opacity: 0.8, dashArray: [2, 2] },
        // 海洋
        coast: { color: "#ccc", width: 0.7, opacity: 0.8 },
        // 港澳
        hkm: { color: "gray", width: 0.7, opacity: 0.8 },
      },
      // 邊界顏色
      style: {
        opacity: 1,
        stroke: "rgb(93,112,146)",
        lineWidth: 0.6,
        lineOpacity: 1,
      },
      // 數(shù)據(jù)標(biāo)簽
      label: {
        visible: false,
      },
      // 選擇高亮
      state: {
        active: { stroke: "black", lineWidth: 1 },
      },
      // 提示
      tooltip: {
        inPlot: false,
        items: ["name", "code", "value"],
      },
    });
  },
};
</script>
<style lang="less" scoped>
#container {
  width: 100%;
  height: 300px;
}
</style>

小結(jié)

如果你還沒(méi)了解antv,現(xiàn)在它應(yīng)該進(jìn)入你的視野了,他提供了很多炫酷的圖表,以及強(qiáng)大的圖表功能,就算現(xiàn)在用不到,下次做個(gè)嘗試也未嘗不可,可能你會(huì)喜歡上它,并且替換掉echarts。

就舉這些圖表例子了,文章相關(guān)的例子源碼也上傳到Github了。這次開發(fā)過(guò)程中,也是把antv文檔上上下下翻了好幾遍,對(duì)于使用方式以及屬性有一定的了解,如果你是剛剛要使用antv或者使用中遇到問(wèn)題,可以評(píng)論區(qū)留言,共同成長(zhǎng),fighting~

以上就是使用antv替代Echarts實(shí)現(xiàn)數(shù)據(jù)可視化圖表詳解的詳細(xì)內(nèi)容,更多關(guān)于Echarts數(shù)據(jù)可視化圖表的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue使用this.$message不生效的部分原因及解決方案

    vue使用this.$message不生效的部分原因及解決方案

    這篇文章主要介紹了vue使用this.$message不生效的部分原因及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Element Card 卡片的具體使用

    Element Card 卡片的具體使用

    這篇文章主要介紹了Element Card 卡片的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • vue-socket.io接收不到數(shù)據(jù)問(wèn)題的解決方法

    vue-socket.io接收不到數(shù)據(jù)問(wèn)題的解決方法

    這篇文章主要介紹了解決vue-socket.io接收不到數(shù)據(jù)問(wèn)題的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • vue router中mode history、base的作用說(shuō)明

    vue router中mode history、base的作用說(shuō)明

    這篇文章主要介紹了vue router中mode history、base的作用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 前端Vue?select下拉框使用以及監(jiān)聽事件詳解

    前端Vue?select下拉框使用以及監(jiān)聽事件詳解

    由于前端項(xiàng)目使用的是Vue.js和bootstrap整合開發(fā),中間用到了select下拉框,這篇文章主要給大家介紹了關(guān)于前端Vue?select下拉框使用以及監(jiān)聽事件的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • vue.js實(shí)例對(duì)象+組件樹的詳細(xì)介紹

    vue.js實(shí)例對(duì)象+組件樹的詳細(xì)介紹

    這篇文章主要介紹了vue.js實(shí)例對(duì)象+組件樹的相關(guān)資料,需要的朋友可以參考下
    2017-10-10
  • Vue表單實(shí)例代碼

    Vue表單實(shí)例代碼

    Vue.js 是用于構(gòu)建交互式的 Web 界面的庫(kù)。這篇文章主要介紹了Vue表單實(shí)例代碼的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • 詳解vue過(guò)濾器在v2.0版本用法

    詳解vue過(guò)濾器在v2.0版本用法

    本篇文章主要介紹了vue過(guò)濾器在v2.0版本用法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • vue跨窗口通信之新窗口調(diào)用父窗口方法實(shí)例

    vue跨窗口通信之新窗口調(diào)用父窗口方法實(shí)例

    由于開發(fā)需要,我需要在登錄成功請(qǐng)求成功后,調(diào)用父窗口的一個(gè)點(diǎn)擊事件方法,這篇文章主要給大家介紹了關(guān)于vue跨窗口通信之新窗口調(diào)用父窗口的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • 淺談vue-cli加載不到dev-server.js的解決辦法

    淺談vue-cli加載不到dev-server.js的解決辦法

    本篇文章主要介紹了淺談vue-cli加載不到dev-server.js的解決辦法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11

最新評(píng)論