Echarts学习系列之3D环形图
前言
我在网上找了一些例子,最后找了一个vue2.0的例子,使用效果如下,基本上符合了要求,其实代码我自己也看不懂。有时候想想啊,自己已经干了七八年的开发,却还是什么都不会,就是Ctrl+V,还是有些惭愧的。
关于如何实现一个3d环形图,可以通过类似于2d的实现思路:
(1) 扇形镂空:就是生成扇形,然后进行挖空,把靠近圆心的部分做成透明。
(2) 圆环分割:就是通过曲面方程,实现一个圆环,然后再进行分割
1.扇形镂空
刚开始我所找到的方式就是这种,就是通过以一个的三维扇形图,然后想办法把中间的部分搞掉,和二维的圆环差不多,二维的圆环不就是外面一个圈,然后里面一个圈吗。这个在网上有现成的代码,可以尝试修改和使用,大部分的代码都是大同小异的。
1.echarts的3D环形图 mouseover: 近似实现饼图的高亮(放大)效果,大致思路是,在饼图外部套一层透明的圆环,然后监听 mouseover 事件,获取到对应数据的系列序号 params.seriesIndex 或系列名称 params.seriesName,如果鼠标移到了扇形上,则先取消高亮之前的扇形(如果有),再高亮当前扇形;如果鼠标移到了透明圆环上,则只取消高亮之前的扇形(如果有),不做任何高亮。
2.3d环形图示例 这里是上面的代码示例。
3.echarts3d饼图,环形图(包含透明效果) 这是一个示例的代码,基本上都是代码,至于怎么用,还是看个人的水平了。还有关于鼠标高亮的代码。
4.susuhhhhhh / SUSU_CSS(blbl) 这里有实现3d环图的例子
5.3d饼图 echarts 社区给的例子,3d饼图。加上一个 internalDiameterRatio,将 k = 1 改为 k = 1 - internalDiameterRatio 透明的空心占比就可以成为圆环图了,这个只有 4.9.0 可以使用,高版本就不行了。
6.echarts 3d环形图怎么实现啊? 这个里面提到了多个例子。
7.3D 饼环图初步完成 这里实现的圆环可以拖动喝旋转
2.圆环分割
这种实现形式,就是说先实现一个手镯,然后再拍扁的形式,参考一就是这种说明,虽然有步骤,但是我还是没有看懂。
根据圆环面可以参数式地定义为:
x ( u , v ) = ( R + r cos v ) cos u
y ( u , v ) = ( R + r cos v ) sin u
z ( u , v ) = r sin v
1.3D 饼环图初步完成原理 这是上面的原理分析,通过一个手镯然后拍扁进行了实现。
绘制圆环
在 官方示例代码 的基础上,编写如下的代码,创建一个圆环,这里要注意的就是 如果出现的是一个圆柱体,要调整 zAxis3D 的范围,这样就可以出现想要的圆环效果了。
1 | option = { |
就会创建一个圆环
分割圆环
还可以创建不同颜色的圆环
1 | option = { |
结果如图:
压扁圆环
可以通过设置不同的z轴,将圆环变为圆柱
1 | option = { |
效果如图:
扇面
通过进一步的配置,可以设置扇面图 startRatio:开始比例,endRatio:结束比例,k:内外半径,测试时我取 0.2
1 | option = { |
最终效果:
折线图
如何在三维图表中绘制一根线
1.三维折线图正交投影 这个官方提供的一个绘制了三维螺旋线的示例
2.vue使用echart 完成3d系列1之曲面空心圆 这是一个绘制曲面空心圆的示例,也是用了参数方程的形式
3.Sphere Parametric Surface 这是使用surface实现的球
4.使用 ECharts GL 实现基础的三维可视化 三维立体散点图
5.echarts-gl中3d曲面UV参数详解
曲面方程和UV坐标
在echarts的3d surface 模块,有一个 parametricEquation 参数,这个参数的解释就是;曲面的参数方程。在data没被设置的时候,可以通过 parametricEquation 去声明参数参数方程。在 parametric 为true时有效。参数方程是 x、y、 z 关于参数 u、v 的方程。通过这个参数,就可以绘制一个连续的曲面了,比如球、比如圆环,比如其他的一些复杂的曲面。
于是我就想着先把UV坐标和曲面方程这个部分弄一下。
1.【微分几何】球面的参数方程和uv平面
2.【原创】NURBS表面的UV空间与三维欧式空间
3.SuperMap三维复杂模型建模之3D极坐标建模——原理篇 这篇文章中讲了曲面方程和自变量uv的关系,可以好好的看看。3D极坐标建模功能实现根据UV参数和数学表达式,构建包括球面、抛物面、双曲抛物面、柱面、圆锥面、莫比乌斯环面、螺旋面、螺旋环面以及Roman曲面等多种3D曲面模型。
4.series-surface. parametricEquation
5.一些曲面的参数方程
6.环面 维基百科中的环面,有关于参数方程的描述,就是我使用的参数方程
3.其他
还有一些其他的库可以实现圆环效果,这里摘录下。
问题
(1) Unkown series surface
这是因为使用echarts 3d模块,需要引入echarts-gl
1 | pnpm add echarts-gl --save |
引入:
1 | import * as echarts from 'echarts'; |
1.echarts报错 Unkown series surface
2.echarts使用3D时报错Error: Component series.surface not exists. Load it first. npm install echarts-gl -S