数据可视化——echarts
目錄
?
一、可視化面板介紹
二、可視化庫介紹
三、Echarts-體驗
? ?1.引入echarts 插件文件到html頁面中
? ?2.準備一個具備大小的DOM容器
? ?3.初始化echarts實例對象
? ?4.指定配置項和數(shù)據(jù)(option)
? ?5.將配置項設(shè)置給echarts實例對象
四、Echarts-基礎(chǔ)配置
五、柱狀圖1
引入到html頁面中
2.根據(jù)需求定制
六、柱狀圖2
需求1: 修改圖形大小 grid
需求2: 不顯示x軸
需求3: y軸相關(guān)定制
需求4: 修改第一組柱子相關(guān)樣式(條狀)
需求5: 修改第二組柱子的相關(guān)配置(框狀)
需求6: 給y軸添加第二組數(shù)據(jù)
需求7: 設(shè)置兩組柱子層疊以及更換數(shù)據(jù)
完整代碼:
七、折線圖-人員變化模塊制作
八、折線圖-播放量模塊制作
九、餅形圖-年齡分布模塊制作
十、餅形圖-地區(qū)分布模塊制作(南丁格爾玫瑰圖)
十一、Echarts社區(qū)介紹
一、可視化面板介紹
應(yīng)對現(xiàn)在數(shù)據(jù)可視化的趨勢,越來越多企業(yè)需要在很多場景(營銷數(shù)據(jù),生產(chǎn)數(shù)據(jù),用戶數(shù)據(jù))下使用,可視化圖表來展示體現(xiàn)數(shù)據(jù),讓數(shù)據(jù)更加直觀,數(shù)據(jù)特點更加突出。
二、可視化庫介紹
常見的數(shù)據(jù)可視化庫:
-
D3.js 目前 Web 端評價最高的 Javascript 可視化工具庫(入手難)
-
ECharts.js 百度出品的一個開源 Javascript 數(shù)據(jù)可視化庫
-
Highcharts.js 國外的前端數(shù)據(jù)可視化庫,非商用免費,被許多國外大公司所使用
-
AntV 螞蟻金服全新一代數(shù)據(jù)可視化解決方案 等等
-
Highcharts 和 Echarts 就像是 Office 和 WPS 的關(guān)系
ECharts,一個使用 JavaScript 實現(xiàn)的開源可視化庫,可以流暢的運行在 PC 和移動設(shè)備上,兼容當前絕大部分瀏覽器(IE8/9/10/11,Chrome,Firefox,Safari等),底層依賴矢量圖形庫 ZRender,提供直觀,·交互豐富,可高度個性化定制的數(shù)據(jù)可視化圖表。
大白話:
-
是一個JS插件
-
性能好可流暢運行PC與移動設(shè)備
-
兼容主流瀏覽器
-
提供很多常用圖表,且可定制。
-
折線圖、柱狀圖、散點圖、餅圖、K線圖
-
官網(wǎng)地址:https://www.echartsjs.com/zh/index.html
中文版本網(wǎng)址:Documentation - Apache ECharts
三、Echarts-體驗
官方教程:五分鐘上手ECharts
-
下載echarts GitHub - apache/echarts at 4.5.0
使用步驟:
? ?1.引入echarts 插件文件到html頁面中
? ?2.準備一個具備大小的DOM容器
<div id="main" style="width: 600px;height:400px;"></div>? ?3.初始化echarts實例對象
var myChart = echarts.init(document.getElementById('main'));? ?4.指定配置項和數(shù)據(jù)(option)
var option = {xAxis: {type: 'category',data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']},yAxis: {type: 'value'},series: [{data: [820, 932, 901, 934, 1290, 1330, 1320],type: 'line'}] };? ?5.將配置項設(shè)置給echarts實例對象
myChart.setOption(option);四、Echarts-基礎(chǔ)配置
這是要求同學們知道以下配置每個模塊的主要作用干什么的就可以了
需要了解的主要配置:series xAxis yAxis grid tooltip title legend color
-
series
-
系列列表。每個系列通過 type 決定自己的圖表類型
-
大白話:圖標數(shù)據(jù),指定什么類型的圖標,可以多個圖表重疊。
-
-
xAxis:直角坐標系 grid 中的 x 軸
-
boundaryGap: 坐標軸兩邊留白策略 true,這時候刻度只是作為分隔線,標簽和數(shù)據(jù)點都會在兩個刻度之間的帶(band)中間。
-
-
yAxis:直角坐標系 grid 中的 y 軸
-
grid:直角坐標系內(nèi)繪圖網(wǎng)格。
-
title:標題組件
-
tooltip:提示框組件
-
legend:圖例組件
-
color:調(diào)色盤顏色列表
數(shù)據(jù)堆疊,同個類目軸上系列配置相同的stack值后 后一個系列的值會在前一個系列的值上相加。
五、柱狀圖1
-
官網(wǎng)找到類似實例, 適當分析,并且引入到HTML頁面中
-
根據(jù)需求定制圖表
1.引入到html頁面中
// 柱狀圖1模塊 (function() {// 實例化對象let myChart = echarts.init(document.querySelector(".bar .chart"));// 指定配置和數(shù)據(jù)let option = {color: ["#3398DB"],tooltip: {trigger: "axis",axisPointer: {// 坐標軸指示器,坐標軸觸發(fā)有效type: "shadow" // 默認為直線,可選為:'line' | 'shadow'}},grid: {left: "3%",right: "4%",bottom: "3%",containLabel: true},xAxis: [{type: "category",data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],axisTick: {alignWithLabel: true}}],yAxis: [{type: "value"}],series: [{name: "直接訪問",type: "bar",barWidth: "60%",data: [10, 52, 200, 334, 390, 330, 220]}]}; ?// 把配置給實例對象myChart.setOption(option); })();2.根據(jù)需求定制
-
?修改圖表柱形顏色 #2f89cf
-
修改圖表大小 top 為 10px bottom 為 4% grid決定我們的柱狀圖的大小
-
X軸相關(guān)設(shè)置 xAxis
-
文本顏色設(shè)置為 rgba(255,255,255,.6) 字體大小為 12px
-
X軸線的樣式 不顯示
-
-
Y 軸相關(guān)定制
-
文本顏色設(shè)置為 rgba(255,255,255,.6) 字體大小為 12px
-
Y 軸線條樣式 更改為 1像素的 rgba(255,255,255,.1) 邊框
-
分隔線的顏色修飾為 1像素的 rgba(255,255,255,.1)
-
-
修改柱形為圓角以及柱子寬度 series 里面設(shè)置
-
更換對應(yīng)數(shù)據(jù)
-
讓圖表跟隨屏幕自適應(yīng)
六、柱狀圖2
-
官網(wǎng)找到類似實例, 適當分析,并且引入到HTML頁面中
-
根據(jù)需求定制圖表
需求1: 修改圖形大小 grid
?// 圖標位置grid: {top: "10%",left: "22%",bottom: "10%"},需求2: 不顯示x軸
? xAxis: {show: false},需求3: y軸相關(guān)定制
-
不顯示y軸線和相關(guān)刻度
-
y軸文字的顏色設(shè)置為白色
需求4: 修改第一組柱子相關(guān)樣式(條狀)
name: "條", // 柱子之間的距離 barCategoryGap: 50, //柱子的寬度 barWidth: 10, // 柱子設(shè)為圓角 itemStyle: {normal: {barBorderRadius: 20, ? ? ? } },-
設(shè)置第一組柱子內(nèi)百分比顯示數(shù)據(jù)
-
設(shè)置第一組柱子不同顏色
需求5: 修改第二組柱子的相關(guān)配置(框狀)
? ?name: "框",type: "bar",barCategoryGap: 50,barWidth: 15,itemStyle: {color: "none",borderColor: "#00c1de",borderWidth: 3,barBorderRadius: 15},data: [19325, 23438, 31000, 121594, 134141, 681807]}需求6: 給y軸添加第二組數(shù)據(jù)
yAxis: [{type: "category",data: ["印尼", "美國", "印度", "中國", "世界人口(萬)"],// 不顯示y軸的線axisLine: {show: false},// 不顯示刻度axisTick: {show: false},// 把刻度標簽里面的文字顏色設(shè)置為白色axisLabel: {color: "#fff"}},{show: true,data: [702, 350, 610, 793, 664],// 不顯示y軸的線axisLine: {show: false},// 不顯示刻度axisTick: {show: false},axisLabel: {textStyle: {fontSize: 12,color: "#fff"}}}],需求7: 設(shè)置兩組柱子層疊以及更換數(shù)據(jù)
// 給series 第一個對象里面的 添加 yAxisIndex: 0, // 給series 第二個對象里面的 添加 yAxisIndex: 1, // series 第一個對象里面的data data: [70, 34, 60, 78, 69], // series 第二個對象里面的data data: [100, 100, 100, 100, 100], // y軸更換第一個對象更換data數(shù)據(jù) data: ["HTML5", "CSS3", "javascript", "VUE", "NODE"], // y軸更換第二個對象更換data數(shù)據(jù) data:[702, 350, 610, 793, 664],完整代碼:
// 柱狀圖2 (function() {var myColor = ["#1089E7", "#F57474", "#56D0E3", "#F8B448", "#8B78F6"];// 1. 實例化對象var myChart = echarts.init(document.querySelector(".bar2 .chart"));// 2. 指定配置和數(shù)據(jù)var option = {grid: {top: "10%",left: "22%",bottom: "10%"// containLabel: true},// 不顯示x軸的相關(guān)信息xAxis: {show: false},yAxis: [{type: "category",inverse: true,data: ["HTML5", "CSS3", "javascript", "VUE", "NODE"],// 不顯示y軸的線axisLine: {show: false},// 不顯示刻度axisTick: {show: false},// 把刻度標簽里面的文字顏色設(shè)置為白色axisLabel: {color: "#fff"}},{data: [702, 350, 610, 793, 664],inverse: true,// 不顯示y軸的線axisLine: {show: false},// 不顯示刻度axisTick: {show: false},// 把刻度標簽里面的文字顏色設(shè)置為白色axisLabel: {color: "#fff"}}],series: [{name: "條",type: "bar",data: [70, 34, 60, 78, 69],yAxisIndex: 0,// 修改第一組柱子的圓角itemStyle: {barBorderRadius: 20,// 此時的color 可以修改柱子的顏色color: function(params) {// params 傳進來的是柱子對象console.log(params);// dataIndex 是當前柱子的索引號return myColor[params.dataIndex];}},// 柱子之間的距離barCategoryGap: 50,//柱子的寬度barWidth: 10,// 顯示柱子內(nèi)的文字label: {show: true,position: "inside",// {c} 會自動的解析為 數(shù)據(jù) data里面的數(shù)據(jù)formatter: "{c}%"}},{name: "框",type: "bar",barCategoryGap: 50,barWidth: 15,yAxisIndex: 1,data: [100, 100, 100, 100, 100],itemStyle: {color: "none",borderColor: "#00c1de",borderWidth: 3,barBorderRadius: 15}}]}; ?// 3. 把配置給實例對象myChart.setOption(option); })(); ?七、折線圖-人員變化模塊制作
-
官網(wǎng)找到類似實例, 適當分析,并且引入到HTML頁面中
-
根據(jù)需求定制圖表
需求1: 修改折線圖大小,顯示邊框設(shè)置顏色:#012f4a,并且顯示刻度標簽。
? ?// 設(shè)置網(wǎng)格樣式grid: { top: '20%',left: '3%',right: '4%',bottom: '3%',show: true,// 顯示邊框borderColor: '#012f4a',// 邊框顏色containLabel: true // 包含刻度文字在內(nèi)},需求2: 修改圖例組件中的文字顏色 #4c9bfd, 距離右側(cè) right 為 10%
// 圖例組件legend: {textStyle: {color: '#4c9bfd' // 圖例文字顏色},right: '10%' // 距離右邊10%},需求3: x軸相關(guān)配置
-
刻度去除
-
x軸刻度標簽字體顏色:#4c9bfd
-
剔除x坐標軸線顏色(將來使用Y軸分割線)
-
軸兩端是不需要內(nèi)間距 boundaryGap
需求4: y軸的定制
-
刻度去除
-
字體顏色:#4c9bfd
-
分割線顏色:#012f4a
需求5: 兩條線形圖定制
-
顏色分別:#00f2f1 #ed3f35
-
把折線修飾為圓滑 series 數(shù)據(jù)中添加 smooth 為 true
需求6: 配置數(shù)據(jù)
// x軸的文字 xAxis: {type: 'category',data: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], // 圖標數(shù)據(jù)series: [{name:'新增粉絲',data: [24, 40, 101, 134, 90, 230, 210, 230, 120, 230, 210, 120],type: 'line',smooth: true},{name:'新增游客',data: [40, 64, 191, 324, 290, 330, 310, 213, 180, 200, 180, 79], ? ? type: 'line',smooth: true}}]需求7: 新增需求 點擊 2020年 2021年 數(shù)據(jù)發(fā)生變化
以下是后臺送過來數(shù)據(jù)(ajax請求過來的)
var yearData = [{year: '2020', ?// 年份data: [ ?// 兩個數(shù)組是因為有兩條線[24, 40, 101, 134, 90, 230, 210, 230, 120, 230, 210, 120],[40, 64, 191, 324, 290, 330, 310, 213, 180, 200, 180, 79]]},{year: '2021', ?// 年份data: [ ?// 兩個數(shù)組是因為有兩條線[123, 175, 112, 197, 121, 67, 98, 21, 43, 64, 76, 38],[143, 131, 165, 123, 178, 21, 82, 64, 43, 60, 19, 34]]}];-
tab欄切換事件
-
點擊2020按鈕 需要把 series 第一個對象里面的data 換成 2020年對象里面data[0]
-
點擊2020按鈕 需要把 series 第二個對象里面的data 換成 2020年對象里面data[1]
-
2021 按鈕同樣道理
完整代碼:
// 折線圖1模塊制作 (function() {var yearData = [{year: "2020", // 年份data: [// 兩個數(shù)組是因為有兩條線[24, 40, 101, 134, 90, 230, 210, 230, 120, 230, 210, 120],[40, 64, 191, 324, 290, 330, 310, 213, 180, 200, 180, 79]]},{year: "2021", // 年份data: [// 兩個數(shù)組是因為有兩條線[123, 175, 112, 197, 121, 67, 98, 21, 43, 64, 76, 38],[143, 131, 165, 123, 178, 21, 82, 64, 43, 60, 19, 34]]}];// 1. 實例化對象var myChart = echarts.init(document.querySelector(".line .chart"));// 2.指定配置var option = {// 通過這個color修改兩條線的顏色color: ["#00f2f1", "#ed3f35"],tooltip: {trigger: "axis"},legend: {// 如果series 對象有name 值,則 legend可以不用寫data// 修改圖例組件 文字顏色textStyle: {color: "#4c9bfd"},// 這個10% 必須加引號right: "10%"},grid: {top: "20%",left: "3%",right: "4%",bottom: "3%",show: true, // 顯示邊框borderColor: "#012f4a", // 邊框顏色containLabel: true // 包含刻度文字在內(nèi)}, ?xAxis: {type: "category",boundaryGap: false,data: ["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],axisTick: {show: false // 去除刻度線},axisLabel: {color: "#4c9bfd" // 文本顏色},axisLine: {show: false // 去除軸線}},yAxis: {type: "value",axisTick: {show: false // 去除刻度線},axisLabel: {color: "#4c9bfd" // 文本顏色},axisLine: {show: false // 去除軸線},splitLine: {lineStyle: {color: "#012f4a" // 分割線顏色}}},series: [{name: "新增粉絲",type: "line",// true 可以讓我們的折線顯示帶有弧度smooth: true,data: yearData[0].data[0]},{name: "新增游客",type: "line",smooth: true,data: yearData[0].data[1]}]}; ?// 3. 把配置給實例對象myChart.setOption(option);// 4. 讓圖表跟隨屏幕自動的去適應(yīng)window.addEventListener("resize", function() {myChart.resize();}); ?// 5.點擊切換效果$(".line h2").on("click", "a", function() {// alert(1);// console.log($(this).index());// 點擊 a 之后 根據(jù)當前a的索引號 找到對應(yīng)的 yearData的相關(guān)對象// console.log(yearData[$(this).index()]);var obj = yearData[$(this).index()];option.series[0].data = obj.data[0];option.series[1].data = obj.data[1];// 需要重新渲染myChart.setOption(option);}); })();八、折線圖-播放量模塊制作
-
官網(wǎng)找到類似實例, 適當分析,并且引入到HTML頁面中
-
根據(jù)需求定制圖表
需求1: 更換圖例組件文字顏色 rgba(255,255,255,.5) 文字大小為12 以及 提示框組件修改。
legend: {top: "0%",textStyle: {color: "rgba(255,255,255,.5)",fontSize: "12"} },tooltip: {trigger: 'axis',axisPointer: {type: 'line',lineStyle: {color: "yellow",type: "solid"}}},需求2: 修改圖表大小
grid: {left: "10",top: "30",right: "10",bottom: "10",containLabel: true},需求3: 修改x軸相關(guān)配置
-
修改文本顏色為rgba(255,255,255,.6) 文字大小為 12
-
x軸線的顏色為 rgba(255,255,255,.2)
需求4: 修改y軸的相關(guān)配置
? ? ? ?axisTick: { show: false },axisLine: {lineStyle: {color: "rgba(255,255,255,.1)"}},axisLabel: {textStyle: {color: "rgba(255,255,255,.6)",fontSize: 12}},// 修改分割線的顏色splitLine: {lineStyle: {color: "rgba(255,255,255,.1)"}}需求5: 修改兩個線模塊配置(注意在series 里面定制)
? //第一條 線是圓滑smooth: true,// 單獨修改線的樣式lineStyle: {color: "#0184d5",width: 2 },// 填充區(qū)域areaStyle: {// 漸變色,只需要復(fù)制即可color: new echarts.graphic.LinearGradient(0,0,0,1,[{offset: 0,color: "rgba(1, 132, 213, 0.4)" ? // 漸變色的起始顏色},{offset: 0.8,color: "rgba(1, 132, 213, 0.1)" ? // 漸變線的結(jié)束顏色}],false),shadowColor: "rgba(0, 0, 0, 0.1)"},// 設(shè)置拐點 小圓點symbol: "circle",// 拐點大小symbolSize: 8,// 設(shè)置拐點顏色以及邊框itemStyle: {color: "#0184d5",borderColor: "rgba(221, 220, 107, .1)",borderWidth: 12},// 開始不顯示拐點, 鼠標經(jīng)過顯示showSymbol: false,name: "轉(zhuǎn)發(fā)量",type: "line",smooth: true,lineStyle: {normal: {color: "#00d887",width: 2}},areaStyle: {normal: {color: new echarts.graphic.LinearGradient(0,0,0,1,[{offset: 0,color: "rgba(0, 216, 135, 0.4)"},{offset: 0.8,color: "rgba(0, 216, 135, 0.1)"}],false),shadowColor: "rgba(0, 0, 0, 0.1)"}},// 設(shè)置拐點 小圓點symbol: "circle",// 拐點大小symbolSize: 5,// 設(shè)置拐點顏色以及邊框itemStyle: {color: "#00d887",borderColor: "rgba(221, 220, 107, .1)",borderWidth: 12},// 開始不顯示拐點, 鼠標經(jīng)過顯示showSymbol: false,需求6: 更換數(shù)據(jù)
// x軸更換數(shù)據(jù) data: [ "01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","26","28","29","30"], // series 第一個對象data數(shù)據(jù)data: [30,40,30,40,30,40,30,60,20,40,20,40,30,40,30,40,30,40,30,60,20,40,20,40,30,60,20,40,20,40], // series 第二個對象data數(shù)據(jù)data: [50,30,50,60,10,50,30,50,60,40,60,40,80,30,50,60,10,50,30,70,20,50,10,40,50,30,70,20,50,10,40] ?九、餅形圖-年齡分布模塊制作
-
官網(wǎng)找到類似實例, 適當分析,并且引入到HTML頁面中
-
根據(jù)需求定制圖表
定制圖表需求1:
-
修改圖例組件在底部并且居中顯示。
-
每個小圖標的寬度和高度修改為 10px
-
文字大小為12 顏色 rgba(255,255,255,.5)
定制需求2:
-
修改水平居中 垂直居中
-
修改內(nèi)圓半徑和外圓半徑為 ["40%", "60%"] 老師友情提示,帶有直角坐標系的比如折線圖柱狀圖是 grid修改圖形大小,而我們餅形圖是通過 radius 修改大小
定制需求3:更換數(shù)據(jù)
// legend 中的data 可省略 data: ["0歲以下", "20-29歲", "30-39歲", "40-49歲", "50歲以上"], // series 中的數(shù)據(jù)data: [{ value: 1, name: "0歲以下" },{ value: 4, name: "20-29歲" },{ value: 2, name: "30-39歲" },{ value: 2, name: "40-49歲" },{ value: 1, name: "50歲以上" }] ,定制需求4: 更換顏色
color: ["#065aab","#066eab","#0682ab","#0696ab","#06a0ab",],// 4. 讓圖表跟隨屏幕自動的去適應(yīng)window.addEventListener("resize", function() {myChart.resize();});十、餅形圖-地區(qū)分布模塊制作(南丁格爾玫瑰圖)
-
官網(wǎng)找到類似實例, 適當分析,并且引入到HTML頁面中
-
根據(jù)需求定制圖表
第二步:按照需求定制
-
需求1:顏色設(shè)置
-
需求2:修改餅形圖大小 ( series對象)
-
需求3: 把餅形圖的顯示模式改為 半徑模式
-
需求4:數(shù)據(jù)使用更換(series對象 里面 data對象)
-
需求5:字體略小些 10 px ( series對象里面設(shè)置 )
餅圖圖形上的文本標簽可以控制餅形圖的文字的一些樣式。 label 對象設(shè)置
-
需求6:防止縮放的時候,引導(dǎo)線過長。引導(dǎo)線略短些 (series對象里面的 labelLine 對象設(shè)置 )
-
連接圖表 6 px
-
連接文字 8 px
-
-
需求6:瀏覽器縮放的時候,圖表跟著自動適配。
十一、Echarts社區(qū)介紹
注意:官方社區(qū)地址不能用了,需要自己去百度
[社區(qū)](Make A Pie就是一些,活躍的echart使用者,交流和貢獻定制好的圖表的地方。
?
-
在這里可以找到一些基于echart的高度定制好的圖表,相當于基于jquery開發(fā)的插件,這里是基于echarts開發(fā)的第三方的圖表。
總結(jié)
以上是生活随笔為你收集整理的数据可视化——echarts的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 点开计算机左侧没有桌面一项,为什么,我的
- 下一篇: 小程序开发者的利器:小程序插件