国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

antv g2的理解總結(jié)

baihe / 1200人閱讀

摘要:也同樣支持配置項(xiàng)聲明構(gòu)成一個(gè)可視化框架需要四部分?jǐn)?shù)據(jù)處理模塊,對(duì)數(shù)據(jù)進(jìn)行加工的模塊,包括一些數(shù)據(jù)處理方法。因此上的同基本相同。總結(jié)起來(lái),分面其實(shí)提供了兩個(gè)功能按照指定的維度劃分?jǐn)?shù)據(jù)集對(duì)圖表進(jìn)行排版。

G2

G2本身是一門(mén)圖形語(yǔ)法,G2和傳統(tǒng)的圖表系統(tǒng)(HighCharts,ACharts等)不同,G2是一個(gè)基于統(tǒng)計(jì)分析的語(yǔ)義化數(shù)據(jù)可視化系統(tǒng)。它真正做到了讓數(shù)據(jù)驅(qū)動(dòng)圖形,讓你在使用它時(shí)候不用關(guān)心繪圖細(xì)節(jié),只需要知道你想通過(guò)它怎么展示你關(guān)心的數(shù)據(jù)。echarts更多的是配置options來(lái)顯示圖片,出發(fā)點(diǎn)不同。(g2也同樣支持配置項(xiàng)聲明)

G2構(gòu)成

一個(gè)可視化框架需要四部分:

數(shù)據(jù)處理模塊,對(duì)數(shù)據(jù)進(jìn)行加工的模塊,包括一些數(shù)據(jù)處理方法。例如:合并、分組、排序、過(guò)濾、計(jì)算統(tǒng)計(jì)信息等

圖形映射模塊,將數(shù)據(jù)映射到圖形視覺(jué)通道的過(guò)程。例如:將數(shù)據(jù)映射成顏色、位置、大小等

圖形展示模塊,決定使用何種圖形來(lái)展示數(shù)據(jù),點(diǎn)、線、面等圖形標(biāo)記

輔助信息模塊,用于說(shuō)明視覺(jué)通道跟數(shù)據(jù)的映射關(guān)系,例如:坐標(biāo)軸、圖例、輔助文本等

在數(shù)據(jù)處理模塊上,dataSet主要通過(guò)state狀態(tài)管理多個(gè)dataview視圖,實(shí)現(xiàn)多圖聯(lián)動(dòng),或者關(guān)聯(lián)視圖。dataView則是對(duì)應(yīng)的是每一個(gè)數(shù)據(jù)源,通過(guò)connector來(lái)接入不同類(lèi)型的數(shù)據(jù),通過(guò)tranform進(jìn)行數(shù)據(jù)的轉(zhuǎn)換或者過(guò)濾。最后輸出我們理想的數(shù)據(jù),dataSet是與g2分離的,需要用到的時(shí)候可以加載

在圖形映射模塊上,度量 Scale,是數(shù)據(jù)空間到圖形空間的轉(zhuǎn)換橋梁,負(fù)責(zé)原始數(shù)據(jù)到 [0, 1] 區(qū)間數(shù)值的相互轉(zhuǎn)換工作,從原始數(shù)據(jù)到 [0, 1] 區(qū)間的轉(zhuǎn)換我們稱(chēng)之為歸一化操作。我們可以通過(guò)chart.source或者chart.scale("field", defs)來(lái)實(shí)現(xiàn)列定義,我們可以在這對(duì)數(shù)據(jù)進(jìn)行起別名,更換顯示類(lèi)型(time,cat類(lèi)型等)

輔助信息,就是標(biāo)記數(shù)據(jù),方便理解數(shù)據(jù)

圖形展示 chart圖表是一個(gè)大畫(huà)布,可以有多個(gè)view視圖,geom則是數(shù)據(jù)映射的圖形標(biāo)識(shí),就是指的點(diǎn),線,面,通過(guò)對(duì)其操作,從而展示圖形,

這是大體步驟:

//代碼實(shí)現(xiàn)
const data = [
        { genre: "Sports", sold: 275 },
        { genre: "Strategy", sold: 115 },
        { genre: "Action", sold: 120 },
        { genre: "Shooter", sold: 350 },
        { genre: "Other", sold: 150 }
  ]; 
  // G2 對(duì)數(shù)據(jù)源格式的要求,僅僅是 JSON 數(shù)組,數(shù)組的每個(gè)元素是一個(gè)標(biāo)準(zhǔn) JSON 對(duì)象。
  // Step 1: 創(chuàng)建 Chart 對(duì)象
  const chart = new G2.Chart({
    container: "c1", // 指定圖表容器 ID
    width : 600, // 指定圖表寬度
    height : 300 // 指定圖表高度
  });
  // Step 2: 載入數(shù)據(jù)源
  chart.source(data);
  // Step 3:創(chuàng)建圖形語(yǔ)法,繪制柱狀圖,由 genre 和 sold 兩個(gè)屬性決定圖形位置,genre 映射至 x 軸,sold 映射至 y 軸
  chart.interval().position("genre*sold").color("genre")
  // Step 4: 渲染圖表
dataSet

負(fù)責(zé)數(shù)據(jù)處理,使得數(shù)據(jù)驅(qū)動(dòng)視圖, 可以包含多個(gè)dataView,每個(gè)view對(duì)應(yīng)一套數(shù)據(jù)

通過(guò)connector接入數(shù)據(jù)(把各種數(shù)據(jù)類(lèi)型轉(zhuǎn)成一定的形式),再通過(guò)transform進(jìn)行過(guò)濾聚合等操作

// 以下是通過(guò)state過(guò)濾數(shù)據(jù)
// step1 創(chuàng)建 dataset 指定狀態(tài)量
const ds = new DataSet({
  state: {
    year: "2010"
  }
});
// step2 創(chuàng)建 DataView
const dv = ds.createView().source(data);
dv.transform({
  type: "filter",
  callback(row) {
    return row.year === ds.state.year;
  }
});
// step3 引用 DataView
chart.source(dv);
// step4 更新?tīng)顟B(tài)量
ds.setState("year", "2012");
// transform例子
const data = [
  { country: "USA", gold: 10, silver: 20 },
  { country: "Canada", gold: 7, silver: 26 }
];
const dv = ds.createView()
  .source(data)
  .transform({
    type: "fold",
    fields: [ "gold", "silver" ], // 展開(kāi)字段集
    key: "key",                   // key字段
    value: "value",               // value字段
    retains: [ "country" ]        // 保留字段集,默認(rèn)為除 fields 以外的所有字段
  });
/*
 dv.rows 變?yōu)?[
  { key: gold, value: 10, country: "USA" },
  { key: silver, value: 20, country: "USA" },
  { key: gold, value: 7, country: "Canada" },
  { key: silver, value: 26, country: "Canada" }
]
 */
// connector例子
const testCSV = `Expt,Run,Speed
 1,1,850
 1,2,740
 1,3,900
 1,4,1070`;

const dv = new DataSet.View().source(testCSV, {
  type: "csv"
});

console.log(dv.rows);
/*
 * dv.rows:
 * [
 *   {Expt: " 1", Run: "1", Speed: "850"}
 *   {Expt: " 1", Run: "2", Speed: "740"}
 *   {Expt: " 1", Run: "3", Speed: "900"}
 *   {Expt: " 1", Run: "4", Speed: "1070"}
 * ]
 */
度量scale

就是從數(shù)據(jù)到圖形的轉(zhuǎn)化,使得數(shù)據(jù)在展示的時(shí)候可以自定義
所謂的列定義,即是對(duì)度量 scale 的操作

列定義上的操作可以理解為直接修改數(shù)據(jù)源中的數(shù)據(jù)屬性,因此它會(huì)影響坐標(biāo)軸、tooltip 提示信息、圖例、輔助元素 guide 以及幾何標(biāo)記的標(biāo)簽文本 label 的數(shù)據(jù)內(nèi)容顯示。
//以下是關(guān)于數(shù)據(jù)映射scale的demo
const data = [
  { month: 0, value: 1 },
  { month: 1, value: 2 },
  { month: 2, value: 3 }
];
chart.scale("month", {
  type: "cat", // 聲明 type 字段為分類(lèi)類(lèi)型
  values: [ "一月", "二月", "三月" ], // 重新顯示的值
  alias: "月份" // 設(shè)置屬性的別名
});
// 這時(shí)候映射的month就變成了 月份:一月
// 這時(shí)坐標(biāo)軸,tooltip等關(guān)于month的數(shù)據(jù)顯示都改變了
view
視圖,由 Chart 生成和管理,擁有自己獨(dú)立的數(shù)據(jù)源、坐標(biāo)系和圖層,用于異構(gòu)數(shù)據(jù)的可視化以及圖表組合,一個(gè) Chart 由一個(gè)或者多個(gè)視圖 View 組成。

因此 view 上的 api 同 chart 基本相同。
view繪制的圖形是在chart上的,Tooltip(提示信息)和 Legend(圖例)僅在 Chart 上支持,所以view共用一套tooltip和legentd, 可以進(jìn)行圖形的疊加展示,如果需要不同圖形完全隔離開(kāi)的聯(lián)動(dòng)展示,可以再new一個(gè)chart,然后通過(guò)state聯(lián)動(dòng)起來(lái)

geom

g2對(duì)圖形進(jìn)行了抽象,我們通過(guò)對(duì)點(diǎn),線,面操作使得可以我們可以畫(huà)出各種圖形


也可以自定義shape來(lái)實(shí)現(xiàn)圖形

// line畫(huà)出折線圖,position分別從x軸和Y軸取數(shù)據(jù),通過(guò)city的不同畫(huà)出不同的折線
chart.line().position("month*temperature").color("city");  
//size表示的是點(diǎn)的大小,shape為點(diǎn)的類(lèi)型
chart.point().position("month*temperature").color("city").size(4).shape("circle").style({
    stroke: "#fff",
    lineWidth: 1
  });

shape

而shape正是自定義形狀,通過(guò)在Shape 上注冊(cè)圖形,實(shí)現(xiàn)自定義 Shape 的功能。
通過(guò)對(duì)點(diǎn),線,面的描繪實(shí)現(xiàn)自定義圖形

const Shape = G2.Shape;
const shapeObj = Shape.registerShape("geomType", "shapeName", { 
  getPoints(pointInfo) {
    // 獲取每種 shape 繪制的關(guān)鍵點(diǎn)
  },
  draw(cfg, container) {
    // 自定義最終繪制的邏輯
  }
});
coord坐標(biāo)系

chart.coord("coordTpye"[, cfg]);主要就是更改坐標(biāo)系,笛卡爾坐標(biāo)系(直角坐標(biāo)系)和 極坐標(biāo)系,例如通過(guò)改成極坐標(biāo)系來(lái)畫(huà)餅圖

輔助信息 axis坐標(biāo)軸


在這里,你可以進(jìn)行一些針對(duì)坐標(biāo)軸的操作,例如x軸顯示的點(diǎn)的個(gè)數(shù),坐標(biāo)軸點(diǎn)的間距

chart.axis("xField", {
  line: {
    lineWidth: 2, // 設(shè)置線的寬度
    stroke: "red", // 設(shè)置線的顏色
    lineDash: [ 3, 3 ] // 設(shè)置虛線樣式
  }
});

實(shí)現(xiàn)多Y軸的繪制非常簡(jiǎn)單,用戶(hù)完全不需要做任何配置。只要做到各個(gè) geom 的 X 軸屬性相同,Y 軸屬性不同,G2 就會(huì)為您自動(dòng)生成。

legend圖例
chart.legend({ 
  position: "bottom", // 設(shè)置圖例的顯示位置
  itemGap: 20 // 圖例項(xiàng)之間的間距
});

chart.legend("cut", false); // 不顯示 cut 字段對(duì)應(yīng)的圖例

chart.legend("price", {
  title: null // 不展示圖例 title
});

chart.legend(false); //所有的圖例都不顯示


當(dāng)然,也可以使用html渲染圖例,只需要useHtml:true就可以了

tooltip提示信息


分為兩種配置

在chart上配置

chart.tooltip(true, cfg); // 開(kāi)啟 tooltip,并設(shè)置 tooltip 配置信息
chart.tooltip(cfg); // 省略 true, 直接設(shè)置 tooltip 配置信息
chart.tooltip(false); // 關(guān)閉 tooltip

在geom對(duì)象上配置,粒度更小

chart..tooltip("field1*field2...*fieldN");

支持各種自定義操作,對(duì)于復(fù)雜的場(chǎng)景,可以監(jiān)聽(tīng) chart 對(duì)象上的 tooltip:change 事件,或者通過(guò)回調(diào)進(jìn)行自定義操作

guide輔助元素

chart.guide()
可以畫(huà)輔助線或者輔助圖案
支持line線,image圖片,html,text等內(nèi)容
通過(guò)chart.guide().line({...})來(lái)使用

label圖形文本

label在geom上調(diào)用
chart.point().position(x*y).label("x", {})

slider

需要額外引入

Slider 組件是完全基于數(shù)據(jù)的交互組件,同 chart 并無(wú)任何關(guān)聯(lián),無(wú)論是你的滑動(dòng)條想要操縱多少個(gè) chart 或者 view 都沒(méi)有關(guān)系。其滑動(dòng)時(shí)與圖表的聯(lián)動(dòng)行為,需要同 DataSet 中的狀態(tài)量相結(jié)合,通過(guò)定義每個(gè) Slider 對(duì)象的 onChange 回調(diào)函數(shù),在其中動(dòng)態(tài)更新 DataSet 的狀態(tài)量來(lái)實(shí)現(xiàn)數(shù)據(jù)過(guò)濾
 // !!! 創(chuàng)建 slider 對(duì)象
const slider = new Slider({
  container: "slider", 
  start: "2004-01-01",
  end: "2007-09-24",
  data, // !!! 注意是原始數(shù)據(jù),不要傳入 dv
  xAxis: "date",
  yAxis: "aqi",
  onChange: ({ startText, endText }) => {
    // !!! 更新?tīng)顟B(tài)量
    ds.setState("start", startText);
    ds.setState("end", endText);
  }
});
slider.render(); 
facet分面
分面,將一份數(shù)據(jù)按照某個(gè)維度分隔成若干子集,然后創(chuàng)建一個(gè)圖表的矩陣,將每一個(gè)數(shù)據(jù)子集繪制到圖形矩陣的窗格中。

總結(jié)起來(lái),分面其實(shí)提供了兩個(gè)功能:
1.按照指定的維度劃分?jǐn)?shù)據(jù)集;
2.對(duì)圖表進(jìn)行排版。
主要就是降低維度,把數(shù)據(jù)拆分開(kāi),幫助分析

chart.facet("list", {
  fileds: [ "cut", "carat" ],
  padding: 20 // 各個(gè)分面之間的間距,也可以是數(shù)組 [top, right, bottom, left]
});
animate

可以自定義animate動(dòng)畫(huà)

const { Animate } = G2;
/**
 * @param  {String} animationType      動(dòng)畫(huà)場(chǎng)景類(lèi)型 appear enter leave update
 * @param  {String} 動(dòng)畫(huà)名稱(chēng),用戶(hù)自定義即可
 * @param  {Function} 動(dòng)畫(huà)執(zhí)行函數(shù)
 **/
Animate.registerAnimation(animationType, animationName, animationFun);
其他封裝

antv g2也提供了高層封裝,BizCharts和Viser
BizCharts 地址:https://alibaba.github.io/Biz...
Viser 地址:https://viserjs.github.io/

Viser 并不是針對(duì) React 做的適配,它是對(duì) G2 3.0 通用的抽象。通過(guò)基于 Viser 封裝,現(xiàn)在已經(jīng)支持對(duì) React、 Angular 和 Vue 三個(gè)常用框架的深度整合,對(duì)應(yīng)的是 viser-react、viser-ng 和 viser-vue。

viser在react的使用,類(lèi)似于新版的react-router,一切皆是組件

export default class App extends React.Component {
  render() {
    return (
      
        
        
        
        
      
    );
  }
}

在vue中也類(lèi)似



另外,g2同樣支持配置項(xiàng)聲明的方式編寫(xiě),通過(guò)編寫(xiě)options來(lái)

如果有錯(cuò)誤的地方,歡迎指出~~~
感謝收看~~

參考文獻(xiàn):
https://antv.alipay.com/zh-cn...
https://antv.alipay.com/zh-cn...
https://segmentfault.com/a/11...

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/92980.html

相關(guān)文章

  • 螞蟻金服新一代數(shù)據(jù)可視化引擎 G2

    摘要:新公司已經(jīng)呆了一個(gè)多月,目前著手一個(gè)數(shù)據(jù)可視化的項(xiàng)目,數(shù)據(jù)可視化肯定要用到圖形庫(kù)如等,經(jīng)決定我的這個(gè)項(xiàng)目用阿里旗下螞蟻金服所開(kāi)發(fā)的圖表庫(kù)。數(shù)據(jù)提示框內(nèi)提示的信息還可以通過(guò)格式化函數(shù)動(dòng)態(tài)指定。 新公司已經(jīng)呆了一個(gè)多月,目前著手一個(gè)數(shù)據(jù)可視化的項(xiàng)目,數(shù)據(jù)可視化肯定要用到圖形庫(kù)如D3、Highcharts、ECharts、Chart等,經(jīng)決定我的這個(gè)項(xiàng)目用阿里旗下螞蟻金服所開(kāi)發(fā)的G2圖表庫(kù)。...

    animabear 評(píng)論0 收藏0
  • 三大圖表庫(kù):ECharts 、 BizCharts 和 G2,該如何選擇?

    摘要:最近阿里正式開(kāi)源的圖表庫(kù)基于技術(shù)棧,各個(gè)圖表項(xiàng)皆采用了組件的形式,貼近的使用特點(diǎn)。相關(guān)文檔組件化阿里的圖表組件手拉手,用開(kāi)發(fā)動(dòng)態(tài)刷新組件文檔地址一安裝通過(guò)引入二引用成功安裝完成之后,即可使用或進(jìn)行引用。最近阿里正式開(kāi)源的BizCharts圖表庫(kù)基于React技術(shù)棧,各個(gè)圖表項(xiàng)皆采用了組件的形式,貼近React的使用特點(diǎn)。同時(shí)BizCharts基于G2進(jìn)行封裝,Bizcharts也繼承了G2相...

    draveness 評(píng)論0 收藏0
  • 螞蟻金服可視化圖形語(yǔ)法 G2 3.3 發(fā)布:琢·磨

    摘要:更好的閱讀體驗(yàn),請(qǐng)移步語(yǔ)雀是螞蟻金服數(shù)據(jù)可視化解決方案的一個(gè)子產(chǎn)品,是一套數(shù)據(jù)驅(qū)動(dòng)的高交互的可視化圖形語(yǔ)法。歡迎共建是一套數(shù)據(jù)驅(qū)動(dòng)的高交互的可視化圖形語(yǔ)法。 showImg(https://segmentfault.com/img/remote/1460000016710544); 更好的閱讀體驗(yàn),請(qǐng)移步語(yǔ)雀 G2 是螞蟻金服數(shù)據(jù)可視化解決方案 AntV 的一個(gè)子產(chǎn)品,是一套數(shù)據(jù)驅(qū)動(dòng)的...

    TZLLOG 評(píng)論0 收藏0
  • [BizCharts學(xué)習(xí)筆記](méi) --- 數(shù)據(jù)可視化

    摘要:所以筆者選擇了,為什么會(huì)選擇一是因?yàn)樗前⒗锍銎罚?jīng)歷了一年左右的打磨已經(jīng)完全適應(yīng)在使用其次是它支持自由定制,不會(huì)像那樣高度封裝,所以在開(kāi)發(fā)復(fù)雜圖表的時(shí)候會(huì)更加得心應(yīng)手。只是阿里圖表庫(kù)中的一員。 實(shí)際上,在數(shù)據(jù)可視化這一塊筆者并沒(méi)有很多的開(kāi)發(fā)經(jīng)歷和經(jīng)驗(yàn),不過(guò)正是因?yàn)檫@個(gè)問(wèn)題筆者才決定學(xué)習(xí)一門(mén)數(shù)據(jù)可視化框架來(lái)彌補(bǔ)自己在這一方面的不足。在這個(gè)大數(shù)據(jù)統(tǒng)治的時(shí)代,數(shù)據(jù)能給我們提供前所未有的便捷...

    CoffeX 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<