ECharts的三维可视化及在微信小程序中使用示例

目录
  • 在微信小程序中使用 ECharts
  • 三维可视化

在微信小程序中使用 ECharts

关于微信小程序的项目创建。 创建项目后,可以用新项目完全替换weixin项目下载的电子商务/图表,然后修改代码;或者只需将ec画布目录复制到新项目,然后进行相应的调整。 如果采用完全替换的方法,则project.config json中的appid将替换为公共平台上应用的项目id。

pages目录下的每个文件夹都是一个页面。可以根据情况删除不必要的页面,然后单击应用程序删除json中的相应页面。 如果只复制ec画布目录,则可以参考pages/bar目录中多个文件的写入方法。现在,让我们详细解释一下。

{
  "usingComponents": {
    "ec-canvas": "../../ec-canvas/ec-canvas"
  }
}

首先,在pages/bar目录中创建以下文件:index.js、index。json、索引。wxml、索引。wxss在应用程序中,“pages/bar/index”被添加到json页面中。 指数json配置如下:

<view class="container">
  <ec-canvas id="mychart-dom-bar" canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas>
</view>

此配置的功能是允许我们选择在wxml中使用的pages/bar/index组件。请注意,路径的相对位置应正确写入。如果目录结构与本例中的目录结构相同,则应按上述方式进行配置。 指数在wxml中,我们创建了一个<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
    }
  }
});

目前支持的内容: 工具提示 相片 多个zlevel层 此外,还有一些bug尚未修复,其中一些需要小程序团队的在线支持,但不影响基本使用。已知错误包括: Android平台:转换的问题(它会影响关系图两端的标记位置和日出图的文本位置) IOS平台:透明度稍深的问题 IOS平台:渐变显示在定义区域之外

三维可视化

<script src="lib/echarts.min.js"></script>
<script src="lib/echarts-gl.min.js"></script>

在介绍了ECharts和ECharts GL之后,我们将首先声明一个基本的三维笛卡尔坐标系,用于绘制常见的统计图,如三维散点图、直方图和曲面图。 在ECharts中,我们有一个网格组件来提供一个矩形区域来放置二维笛卡尔坐标系,以及笛卡尔坐标系上的x轴(xAxis)和y轴(yAxis)。对于三维笛卡尔坐标系,我们在GL中提供网格3D组件来划分三维笛卡尔空间,并将xAxis3D、yAxis3D、zAxis3D放置在网格3D上。

var option = {
    grid3D: {},
    xAxis3D: {},
    yAxis3D: {},
    zAxis3D: {}
}

需要注意的是我们不能跟 grid 一样省略 grid3D,默认情况下, x, y, z 分别是从 0 到 1 的数值轴

在声明了笛卡尔坐标系之后,我们尝试使用程序生成的正态分布数据在这个三维笛卡尔坐标系中绘制散点图。 以下代码用于生成正常分布的数据。不必关心这段代码是如何工作的,只需知道它生成了一个三维正态分布数据并将其放入数据数组中即可。

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);
}
// 创建一个高斯分布函数
var gaussian = makeGaussian(50, 0, 0, 20, 20);
var data = [];
for (var i = 0; i < 1000; i++) {
    // x, y 随机分布
    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
    }]
}

得到如下结果:

默认情况下,前三列(即收入、预期寿命和人口)将分别位于x、y和z轴上。 使用encode属性,我们还可以将指定列的数据映射到指定的坐标轴,从而节省大量繁琐的数据转换代码。例如,如果我们将x轴替换为国家,将y轴替换为年份,将z轴替换为收入,我们可以看到不同国家在不同年份的人均收入分布。

当然,除了visualMap组件,还可以使用其他ECharts内置组件,并充分利用这些组件的交互效果,例如性别。还可以将此示例与3D散点图和散点矩阵结合使用,以实现一系列2D和3D混搭。 在实现GL时,我们尽量减少WebGL和Canvas之间的差异,以便GL的使用更加方便和自然。 在笛卡尔坐标系中显示其他类型的三维图表 除了散点图,我们还可以使用GL在三维笛卡尔坐标系上绘制其他类型的三维图表。例如,在前面的示例中,将scatter3D类型更改为bar3D可以将其转换为三维直方图。

最后,我们经常被问到如何使用ECharts绘制只有二维数据的三维直方图。总的来说,我们不建议这样做,因为这种不必要的三维直方图很容易造成错误的表达。有关详细信息,请参阅直方图指南中的说明。 然而,如果有一些其他因素使得有必要绘制三维直方图,也可以使用GL。

以上就是ECharts的三维可视化及在微信小程序中使用示例的详细内容,更多关于ECharts微信小程序三维可视化的资料请关注我们其它相关文章!

(0)

相关推荐

  • 使用antv替代Echarts实现数据可视化图表详解

    目录 前言 面积图 常用参数文档 图表 度量 scale 提示 tooltip 坐标系 axis chart.line(options) chart.area(options) geom.position() geom.color() geom.shape() 柱状图 数据标签 label chart.coordinate() chart.interval(options) 地图 地图容器配置项 map 地图等级 viewLevel 小结 前言 技术永无止尽,多看看不同风景 周一,还在愉快的为移

  • vue3封装echarts组件最佳形式详解

    目录 思路 目录结构 组件代码 v-charts.vue useCharts.ts type.d.ts options/bar.ts 项目中使用 index.vue /hooks/useStatisDeviceByUserObject.ts 思路 项目中经常用到echarts,不做封装直接拿来使用也行,但不可避免要写很多重复的配置代码,封装稍不注意又会过度封装,丢失了扩展性和可读性.始终没有找到一个好的实践,偶然看到一篇文章,给了灵感.找到了一个目前认为用起来很舒服的封装. 结合项目需求,针对不

  • Pyecharts绘制可视化地球实现示例

    目录 正文 数据处理 Pyecharts 绘图 部署为 Web 服务 tup2 正文 今天我们使用 Pyecharts 制作一个地球可视化项目,一起来看看吧 Let’s go! 数据处理 这里我们使用全球新冠感染人数的数据集作为我们的测试数据,先来看看数据的整体情况 import pandas as pd df = pd.read_csv("owid-covid-data.csv") df_0608 = df[df['date'] == '2022-06-08'] df_new = d

  • JavaScript实现echarts水球图百分比展示大屏可视化

    目录 前言: 示例: 简介: 代码实现 项目文件中引入 声明实例,设置参数,绘制水球图 设置缩放 总结: 前言: 掘友们,大家晚上好啊.今天突然的看到之前的同学,在宿舍群里询问关于echarts水球图的问题,刚好,小编在之前做大屏可视化的时候,关于电脑磁盘空间的存储量做了水球图的展示,我就简单的给他分享了制作过程. 示例: 水球图的应用场景很广泛,一般最多的就是应用于容量大小的展示,使用空间的多少.这里先编以自己的项目为例,向大家展示. 简介: echarts已经升级到了V5版本,但是我们从官方

  • Vue 项目中Echarts 5使用方法详解

    目录 前言 创建项目 基本使用 安装 使用方法 柱状图 动态排序柱状图 前言 Echarts 是一个纯JavaScript的图表库,兼容绝大部分的浏览器,底层依赖轻量级的canvas类库ZRender,提供直观,生动,可交互,可高度个性化定制的数据可视化图表. 创建项目 先使用vue-cli创建一个新的项目,配置按照自己的需要选择,默认的也可 vue create vue_echarts cd vue_echarts npm run serve 基本使用 安装 首先安装echarts npm i

  • ECharts实现数据超出Y轴最大值max但不隐藏

    目录 需求 先翻翻文档 yAxis series.Line 解决方案 完整代码 需求 Y轴必须有最大值,我的折线图的数据可能会超过这个最大值,但是!我需要让他的刻度显示在最大值的位置但是提示框显示的是原来的值. 如下图: 先翻翻文档 yAxis 好家伙,不看不知道一看吓一跳,光 Y 轴的 第一层配置就三十几项.不过好在现在我们不需要关注其他的,找找与数值范围限制的相关属性吧: min:设置 y 轴刻度最小值,默认是 小于等于所有数据最小值 的值,具体根据刻度单位进行计算:手动设置后,小于该值的部

  • Echarts图表分析巴西队历年战绩实例详解

    目录 引言 一.源数据 二.安装Echarts 三.背景图实现 四.拐点自定义 五.线条区域渐进色 六.x轴拖拽 七.X轴设置 八.y轴设置 写在最后 引言 在结束的卡塔尔世界杯八分之一决赛中,巴西队以4:1轻松战胜韩国队,连续八届世界杯晋级八强,我的心情无比的激动,看着自己喜欢的球星,内心十分骄傲. 开始创作本文的时候,满怀欣喜,隐隐看到了内马尔举起了大力神杯.时间定格在12月9日,比赛的第124分钟,是的,巴西

  • ECharts的三维可视化及在微信小程序中使用示例

    目录 在微信小程序中使用 ECharts 三维可视化 在微信小程序中使用 ECharts 关于微信小程序的项目创建. 创建项目后,可以用新项目完全替换weixin项目下载的电子商务/图表,然后修改代码:或者只需将ec画布目录复制到新项目,然后进行相应的调整. 如果采用完全替换的方法,则project.config json中的appid将替换为公共平台上应用的项目id. pages目录下的每个文件夹都是一个页面.可以根据情况删除不必要的页面,然后单击应用程序删除json中的相应页面. 如果只复制

  • 微信小程序中使用ECharts 异步加载数据的方法

    官网例子都是同步的,怎么引入及同步demo请移步官网 <view class="container"> <ec-canvas id="mychart-dom-multi-bar" canvas-id="mychart-multi-bar" ec="{{ ecBar }}"></ec-canvas> <ec-canvas id="mychart-dom-multi-scatte

  • 微信小程序中使用ECharts 异步加载数据实现图表功能

    具体代码如下所示: <view class="container"> <ec-canvas id="mychart-dom-bar" canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas> </view> import * as echarts from '../../ec-canvas/echarts'; var barec = n

  • uniapp在微信小程序中使用ECharts的方法

    今天使用uniapp集成Echarts,实现地图图表的展示 可以参照mpvue-echarts 参照:https://github.com/F-loat/mpvue-echarts https://ask.dcloud.net.cn/article/36288 进行改进 网上有很多教程,但都说的不是很明白,下面直接上步骤 1.npm install echarts mpvue-echarts 执行该命令后,会在node_modules下生成mpvue-echarts.echarts,然后把mpv

  • 微信小程序中悬浮窗功能的实现代码

    问题场景 所谓悬浮窗就是图中微信图标的按钮,采用fixed定位,可拖动和点击. 这算是一个比较常见的实现场景了. 为什么要用cover-view做悬浮窗?原生组件出来背锅了~ 最初我做悬浮窗用的不是cover-view,而是view. 这是简化的代码结构: index.wxml: <view class="move-view" style=" top:{{top}}px;left:{{left}}px;" bindtap="goToHome"

  • 微信小程序中的swiper组件详解

    微信小程序中的swiper组件 微信小程序中的swiper组件真的是简单方便 提供了页面中图片文字等滑动的效果 <swiper> <swiper-item></swiper-item> <swiper-item></swiper-item> <swiper-item></swiper-item> </swiper> 这里的就是一个滑块视图容器:而就是你希望滑动的东西,可以是文字也可以是image 其中swipe

  • 微信小程序中顶部导航栏的实现代码

    微信小程序中顶部导航栏的实现 实例代码: <view class="swiper-tab"> <view class="swiper-tab-list {{currentTab==0 ? 'on' : ''}}" data-current="0" bindtap="swichNav">11</view> <view class="swiper-tab-list {{curre

  • 微信小程序中input标签详解及简单实例

    微信小程序中input标签详解及简单实例 使用input标签,我们都会,在微信小程序中使用,必定也是可以一下子就会的,但是却有些常用的属性无法按照习惯去使用: 我就用我最常用的来做例子: 一个一个来解读: 首先,我是定义了他的id,这是我们最常用的,所以就配了一个id,毕竟不操作他,又为什么设成输入框呢, 第二,设置他的样式, 第三,设置他的输入类别,以上都是很简单的 第四.使用正则l:哎限定输入为纯数字.这点可能有点不理解,这是对他的keyup事件监听,将不是纯数字的list无视掉.注意,是对

  • 微信小程序中使用Promise进行异步流程处理的实例详解

    微信小程序中使用Promise进行异步流程处理的实例详解 我们知道,JavaScript是单进程执行的,同步操作会对程序的执行进行阻塞处理.比如在浏览器页面程序中,如果一段同步的代码需要执行很长时间(比如一个很大的循环操作),则页面会产生卡死的现象. 所以,在JavaScript中,提供了一些异步特性,为程序提供了性能和体验上的益处,比如可以将代码放到setTimeout()中执行:或者在网页中,我们使用Ajax的方式向服务器端做异步数据请求.这些异步的代码不会阻塞当前的界面主进程,界面还是可以

  • 微信小程序中使用javascript 回调函数

     微信小程序中使用javascript 回调函数 回调函数原理: 我现在出发,到了通知你" 这是一个异步的流程,"我出发"这个过程中(函数执行),"你"可以去做任何事,"到了"(函数执行完毕)"通知你"(回调)进行之后的流程 点击此处转载参考文献 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

随机推荐