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將替換為公共平臺(tái)上應(yīng)用的項(xiàng)目id。
pages目錄下的每個(gè)文件夾都是一個(gè)頁(yè)面??梢愿鶕?jù)情況刪除不必要的頁(yè)面,然后單擊應(yīng)用程序刪除json中的相應(yīng)頁(yè)面。 如果只復(fù)制ec畫布目錄,則可以參考pages/bar目錄中多個(gè)文件的寫入方法。現(xiàn)在,讓我們?cè)敿?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頁(yè)面中。 指數(shù)json配置如下:
<view class="container">
<ec-canvas id="mychart-dom-bar" canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas>
</view>
此配置的功能是允許我們選擇在wxml中使用的pages/bar/index組件。請(qǐng)注意,路徑的相對(duì)位置應(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平臺(tái):轉(zhuǎn)換的問題(它會(huì)影響關(guān)系圖兩端的標(biāo)記位置和日出圖的文本位置) IOS平臺(tái):透明度稍深的問題 IOS平臺(tái):漸變顯示在定義區(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)格組件來(lái)提供一個(gè)矩形區(qū)域來(lái)放置二維笛卡爾坐標(biāo)系,以及笛卡爾坐標(biāo)系上的x軸(xAxis)和y軸(yAxis)。對(duì)于三維笛卡爾坐標(biāo)系,我們?cè)贕L中提供網(wǎng)格3D組件來(lái)劃分三維笛卡爾空間,并將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軸替換為國(guó)家,將y軸替換為年份,將z軸替換為收入,我們可以看到不同國(guó)家在不同年份的人均收入分布。

當(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ù)的三維直方圖??偟膩?lái)說(shuō),我們不建議這樣做,因?yàn)檫@種不必要的三維直方圖很容易造成錯(cuò)誤的表達(dá)。有關(guān)詳細(xì)信息,請(qǐng)參閱直方圖指南中的說(shuō)明。 然而,如果有一些其他因素使得有必要繪制三維直方圖,也可以使用GL。
以上就是ECharts的三維可視化及在微信小程序中使用示例的詳細(xì)內(nèi)容,更多關(guān)于ECharts微信小程序三維可視化的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
微信小程序 頁(yè)面跳轉(zhuǎn)和數(shù)據(jù)傳遞實(shí)例詳解
這篇文章主要介紹了微信小程序 頁(yè)面跳轉(zhuǎn)和數(shù)據(jù)傳遞實(shí)例詳解的相關(guān)資料,這里附有實(shí)例代碼幫助到家學(xué)習(xí)理解,需要的朋友可以參考下2017-01-01
微信小程序 本地存儲(chǔ)及登錄頁(yè)面處理實(shí)例詳解
這篇文章主要介紹了微信小程序 本地存儲(chǔ)實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-01-01
async-validator實(shí)現(xiàn)原理源碼解析
這篇文章主要為大家介紹了async-validator實(shí)現(xiàn)原理源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01
創(chuàng)建圖片對(duì)比slider滑塊示例詳解
這篇文章主要為大家介紹了創(chuàng)建圖片對(duì)比slider滑塊示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
JavaScript單例模式能不能去實(shí)例只留單原理解析
這篇文章主要為大家介紹了JavaScript單例模式能不能去實(shí)例只留單原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
JavaScript執(zhí)行機(jī)制詳細(xì)介紹
這篇文章主要介紹了JavaScript執(zhí)行機(jī)制,想要搞懂JavaScript執(zhí)行機(jī)制,便與進(jìn)程與線程的概念脫不了干系,下面我們就來(lái)看看這JavaScript執(zhí)行機(jī)制的具體介紹吧,需要的朋友可以參考一下2021-12-12

