资源说明:发现现在工业SCADA上或者电信网管方面用图表的特别多,虽然绝大部分人在图表制作方面用的是echarts,他确实好用,但是有些时候我们不能调用别的插件,这个时候就得自己写这些美丽的图表了,然而图表轻易做不成美丽的。。。看到有一个网站上在卖的图表,感觉挺好看的,就用 HT for Web 3D 做了一个小例子,挺简单的,也挺好看的,哈哈~
动态效果图如下:
这个例子用 HT 实现真的很容易,首先创建一个 HT 中最基础的 dm 数据模型,然后将数据模型添加进 g3d 3d 组件中,再设置 3d 中的视角并把 3d 组件添加进 body 元素中:
dm = new ht.DataModel()
【HTML5 Canvas 3D图表】HTML5 Canvas 是一种强大的Web绘图技术,允许开发者在浏览器端进行2D和3D图形的绘制。在本文中,我们将探讨如何使用Canvas实现3D动态图表,特别是在工业SCADA系统和电信网管领域的应用。
【HT for Web 3D】HT for Web 是一个强大的可视化开发框架,它提供了丰富的3D图形组件和工具,使得开发者能够轻松创建复杂的3D场景。在这个示例中,我们将使用HT for Web 3D 来构建3D动态图表。
**创建3D图表的基本步骤**:
1. **初始化DataModel**:创建一个HT的DataModel实例,它是HT中用于存储和管理数据的基础。在本例中,`dm = new ht.DataModel()` 就是用来存储图表数据的模型。
2. **创建Graph3dView**:接着,使用`ht.graph3d.Graph3dView` 创建一个3D图表视图,将数据模型`dm`添加到其中,设置3D视图的视角,并将视图添加到HTML文档的body元素内。例如:
```javascript
g3d = new ht.graph3d.Graph3dView(dm);
g3d.setEye(0, 185, 300);
g3d.addToDOM();
g3d.getView().style.background = '#000';
```
3. **构建3D图表元素**:创建3D柱状图的各个部分,包括内部的实心柱和外部的透明柱,以及3D文字表示的百分比。使用`ht.Node` 创建节点对象,设置3D形状、颜色、透明度等属性。例如,设置3D圆柱模型:
```javascript
var cylinderModel = ht.Default.createCylinderModel(1000, 0, 1000, false, false, true, true);
var node = new ht.Node();
node.s({'shape3d': cylinderModel, 'shape3d.color': color, '3d.movable': false});
```
4. **动态更新**:为了实现动态效果,可以使用`setInterval`定时更新柱形的高度和3D文字的值。这样,图表就会随着数据的变化而实时更新,展现出动态的效果。
**3D文字显示**:
在3D环境中显示文字,HT for Web 提供了`shape3d:text`样式,配合加载的自定义typeface字体文件(如JSON格式)。例如,加载字体后,创建3D文字节点:
```javascript
ht.Default.loadFontFace('./wenquanyi.json', function() {
var text = new ht.Node();
text.s3([5, 5, 5]);
// 设置其他属性...
text.s({'shape3d' : 'text', 'shape3d.text': node.a('myHeight')+'%', ...});
});
```
注意,3D文字的性能取决于字体文件的复杂性,过于复杂的字体可能会消耗大量内存,因此需要权衡清晰度和性能。
**总结**:HTML5 Canvas 和 HT for Web 3D 提供了构建3D动态图表的强大工具,允许开发者在浏览器中创建交互式、美观的可视化界面。通过理解这些基本步骤和技巧,可以实现自定义的3D图表,即使在无法使用第三方库如ECharts的情况下,也能满足特定的可视化需求。在实际项目中,可以根据具体需求调整样式、动画效果,以实现更加丰富的视觉表现。
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。
English
