ECharts的三維可視化及在微信小程序中使用示例
在微信小程序中使用 ECharts
關(guān)于微信小程序的項(xiàng)目創(chuàng)建。 創(chuàng)建項(xiàng)目后,可以用新項(xiàng)目完全替換weixin項(xiàng)目下載的電子商務(wù)/圖表,然后修改代碼;或者只需將ec畫布目錄復(fù)制到新項(xiàng)目,然后進(jìn)行相應(yīng)的調(diào)整。 如果采用完全替換的方法,則project.config json中的appid將替換為公共平臺上應(yīng)用的項(xiàng)目id。
pages目錄下的每個(gè)文件夾都是一個(gè)頁面。可以根據(jù)情況刪除不必要的頁面,然后單擊應(yīng)用程序刪除json中的相應(yīng)頁面。 如果只復(fù)制ec畫布目錄,則可以參考pages/bar目錄中多個(gè)文件的寫入方法?,F(xiàn)在,讓我們詳細(xì)解釋一下。
{
"usingComponents": {
"ec-canvas": "../../ec-canvas/ec-canvas"
}
}
首先,在pages/bar目錄中創(chuàng)建以下文件:index.js、index。json、索引。wxml、索引。wxss在應(yīng)用程序中,“pages/bar/index”被添加到j(luò)son頁面中。 指數(shù)json配置如下:
<view class="container">
<ec-canvas id="mychart-dom-bar" canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas>
</view>
此配置的功能是允許我們選擇在wxml中使用的pages/bar/index組件。請注意,路徑的相對位置應(yīng)正確寫入。如果目錄結(jié)構(gòu)與本例中的目錄結(jié)構(gòu)相同,則應(yīng)按上述方式進(jìn)行配置。 指數(shù)在wxml中,我們創(chuàng)建了一個(gè)<ec canvas>組件
function initChart(canvas, width, height) {
const chart = echarts.init(canvas, null, {
width: width,
height: height
});
canvas.setChart(chart);
var option = {
...
};
chart.setOption(option);
return chart;
}
Page({
data: {
ec: {
onInit: initChart
}
}
});
目前支持的內(nèi)容: 工具提示 相片 多個(gè)zlevel層 此外,還有一些bug尚未修復(fù),其中一些需要小程序團(tuán)隊(duì)的在線支持,但不影響基本使用。已知錯(cuò)誤包括: Android平臺:轉(zhuǎn)換的問題(它會影響關(guān)系圖兩端的標(biāo)記位置和日出圖的文本位置) IOS平臺:透明度稍深的問題 IOS平臺:漸變顯示在定義區(qū)域之外
三維可視化
<script src="lib/echarts.min.js"></script> <script src="lib/echarts-gl.min.js"></script>
在介紹了ECharts和ECharts GL之后,我們將首先聲明一個(gè)基本的三維笛卡爾坐標(biāo)系,用于繪制常見的統(tǒng)計(jì)圖,如三維散點(diǎn)圖、直方圖和曲面圖。 在ECharts中,我們有一個(gè)網(wǎng)格組件來提供一個(gè)矩形區(qū)域來放置二維笛卡爾坐標(biāo)系,以及笛卡爾坐標(biāo)系上的x軸(xAxis)和y軸(yAxis)。對于三維笛卡爾坐標(biāo)系,我們在GL中提供網(wǎng)格3D組件來劃分三維笛卡爾空間,并將xAxis3D、yAxis3D、zAxis3D放置在網(wǎng)格3D上。
var option = {
grid3D: {},
xAxis3D: {},
yAxis3D: {},
zAxis3D: {}
}
需要注意的是我們不能跟 grid 一樣省略 grid3D,默認(rèn)情況下, x, y, z 分別是從 0 到 1 的數(shù)值軸

在聲明了笛卡爾坐標(biāo)系之后,我們嘗試使用程序生成的正態(tài)分布數(shù)據(jù)在這個(gè)三維笛卡爾坐標(biāo)系中繪制散點(diǎn)圖。 以下代碼用于生成正常分布的數(shù)據(jù)。不必關(guān)心這段代碼是如何工作的,只需知道它生成了一個(gè)三維正態(tài)分布數(shù)據(jù)并將其放入數(shù)據(jù)數(shù)組中即可。
function makeGaussian(amplitude, x0, y0, sigmaX, sigmaY) {
return function (amplitude, x0, y0, sigmaX, sigmaY, x, y) {
var exponent = -(
( Math.pow(x - x0, 2) / (2 * Math.pow(sigmaX, 2)))
+ ( Math.pow(y - y0, 2) / (2 * Math.pow(sigmaY, 2)))
);
return amplitude * Math.pow(Math.E, exponent);
}.bind(null, amplitude, x0, y0, sigmaX, sigmaY);
}
// 創(chuàng)建一個(gè)高斯分布函數(shù)
var gaussian = makeGaussian(50, 0, 0, 20, 20);
var data = [];
for (var i = 0; i < 1000; i++) {
// x, y 隨機(jī)分布
var x = Math.random() * 100 - 50;
var y = Math.random() * 100 - 50;
var z = gaussian(x, y);
data.push([x, y, z]);
}
option = {
grid3D: {},
xAxis3D: {},
yAxis3D: {},
zAxis3D: { max: 100 },
series: [{
type: 'scatter3D',
data: data
}]
}
得到如下結(jié)果:

默認(rèn)情況下,前三列(即收入、預(yù)期壽命和人口)將分別位于x、y和z軸上。 使用encode屬性,我們還可以將指定列的數(shù)據(jù)映射到指定的坐標(biāo)軸,從而節(jié)省大量繁瑣的數(shù)據(jù)轉(zhuǎn)換代碼。例如,如果我們將x軸替換為國家,將y軸替換為年份,將z軸替換為收入,我們可以看到不同國家在不同年份的人均收入分布。

當(dāng)然,除了visualMap組件,還可以使用其他ECharts內(nèi)置組件,并充分利用這些組件的交互效果,例如性別。還可以將此示例與3D散點(diǎn)圖和散點(diǎn)矩陣結(jié)合使用,以實(shí)現(xiàn)一系列2D和3D混搭。 在實(shí)現(xiàn)GL時(shí),我們盡量減少WebGL和Canvas之間的差異,以便GL的使用更加方便和自然。 在笛卡爾坐標(biāo)系中顯示其他類型的三維圖表 除了散點(diǎn)圖,我們還可以使用GL在三維笛卡爾坐標(biāo)系上繪制其他類型的三維圖表。例如,在前面的示例中,將scatter3D類型更改為bar3D可以將其轉(zhuǎn)換為三維直方圖。


最后,我們經(jīng)常被問到如何使用ECharts繪制只有二維數(shù)據(jù)的三維直方圖??偟膩碚f,我們不建議這樣做,因?yàn)檫@種不必要的三維直方圖很容易造成錯(cuò)誤的表達(dá)。有關(guān)詳細(xì)信息,請參閱直方圖指南中的說明。 然而,如果有一些其他因素使得有必要繪制三維直方圖,也可以使用GL。
以上就是ECharts的三維可視化及在微信小程序中使用示例的詳細(xì)內(nèi)容,更多關(guān)于ECharts微信小程序三維可視化的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
微信小程序 scroll-view組件實(shí)現(xiàn)列表頁實(shí)例代碼
這篇文章主要介紹了微信小程序 scroll-view組件實(shí)現(xiàn)列表頁實(shí)例代碼的相關(guān)資料,scroll-view組件介紹scroll-view是微信小程序提供的可滾動(dòng)視圖組件,其主要作用是可以用來做手機(jī)端經(jīng)常會看到的上拉加載 ,需要的朋友可以參考下2016-12-12
JS實(shí)現(xiàn)刷新網(wǎng)頁后之前瀏覽位置保持不變示例詳解
這篇文章主要為大家介紹了JS實(shí)現(xiàn)刷新網(wǎng)頁后之前瀏覽位置保持不變示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
微信小程序 開發(fā)之頂部導(dǎo)航欄實(shí)例代碼
這篇文章主要介紹了微信小程序 開發(fā)之頂部導(dǎo)航欄實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-02-02
LoadRunner調(diào)用JS加密后登錄實(shí)現(xiàn)
這篇文章主要為大家介紹了LoadRunner調(diào)用JS加密后登錄實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
Javascript中bind()方法綁定函數(shù)的使用與實(shí)現(xiàn)
這篇文章主要為大家介紹了Javascript中bind()方法綁定函數(shù)的使用與實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
采用CSS和JS,剛好我最近有個(gè)站點(diǎn)要用到下拉菜單!
采用CSS和JS,剛好我最近有個(gè)站點(diǎn)要用到下拉菜單!...2006-06-06

