232Echarts - 3D 柱状图(Noise modified from marpi's demo)

简介: 232Echarts - 3D 柱状图(Noise modified from marpi's demo)
效果图

源代码
$.getScript('vendors/simplex.js').done(function () {
var simplex = new SimplexNoise();
window.onresize = myChart.resize;
var UPDATE_DURATION = 1000;
function initVisualizer() {
    config = {
        numWaves: 2,
        randomize: randomize,
        color1: '#000',
        color2: "#300",
        color3: "#fff",
        size: 150,
        roughness: 0.5,
        metalness: 0.
    };
    //gui.add(config, "numWaves", 1, 3).name("Waves number").onChange(update).listen();
    for (var i = 0; i < 2; i++) {
        config["wave" + i + "axis" + "x"] = Math.random();
        config["wave" + i + "axis" + "y"] = Math.random();
        config["wave" + i + "rounding"] = Math.random();
        config["wave" + i + "square"] = Math.random();
    }
    function randomize() {
        //config.numWaves = Math.floor(Math.random() * 3) + 1;
        for (var i = 0; i < 2; i++) {
            config["wave" + i + "axis" + "x"] = Math.random();
            config["wave" + i + "axis" + "y"] = Math.random();
            config["wave" + i + "rounding"] = Math.random();
            config["wave" + i + "square"] = Math.random();
        }
        // Iterate over all controllers
        for (var i in gui.__controllers) {
            gui.__controllers[i].updateDisplay();
        }
        update();
    }
    function update() {
        var item = [];
        var dataProvider = [];
        var mod = .1
        //config.numWaves = Math.round(config.numWaves)
        //var occurenceR = Math.random() * .02
        //var r = 0//Math.random()
        for (var s = 0; s < config.size * config.size; s++) {
            var x = s % config.size;
            var y = Math.floor(s / config.size);
            //if (Math.random() < occurenceR)
            //    r = Math.random()
            var output = 0;
            for (var i = 0; i < config.numWaves; i++) {
                var n = simplex.noise2D(i * 213 + (-50 + x) * mod * (1 - config["wave" + i + "axis" + "x"]) * .5, i * 3124 + (-50 + y) * mod * (1 - config["wave" + i + "axis" + "y"]) * .5)
                n = Math.pow(n, 1.95 - 1.9 * config["wave" + i + "rounding"])
                var square = Math.floor((1.1 - config["wave" + i + "square"]) * 100)
                n = Math.round(n * square) / square;
                    //output*=n
                if (output < n)
                    output = n;
            }
            dataProvider.push([x, y, (output + 0.1) * 2]);
        }
        myChart.setOption({
            visualMap: {
                inRange: {
                    barSize: 100 / config.size,
                    color: [config.color1, config.color2, config.color3],
                }
            },
            series: [{
                data: dataProvider,
                realisticMaterial: {
                    roughness: config.roughness,
                    metalness: config.metalness
                }
            }]
        });
        //setTimeout(update, UPDATE_DURATION);
    }
    update();
}
var focalRange = 40
var blurRadius = 4
myChart.setOption(option = {
    toolbox: {
        left: 20,
        iconStyle: {
            normal: {
                borderColor: '#fff'
            }
        }
    },
    tooltip: {},
    visualMap: {
        show: false,
        min: 0.1,
        max: 2.5,
        inRange: {
            color: ['#000', '#300', '#fff']
        }
    },
    xAxis3D: {
        type: 'value'
    },
    yAxis3D: {
        type: 'value'
    },
    zAxis3D: {
        type: 'value',
        min: -6,
        max: 6
    },
    grid3D: {
        show: false,
        environment: '#000',
        viewControl: {
            distance: 100,
            maxDistance: 150,
            minDistance: 50,
            alpha: 38,
            beta: 220,
            minAlpha: 10,
            //maxBeta: 360,
        },
        postEffect: {
            enable: true,
            SSAO: {
                enable: true,
                intensity: 1.3,
                radius: 5
            },
            screenSpaceReflection: {
                enable: false
            },
            depthOfField: {
                enable: true,
                blurRadius: blurRadius,
                focalRange: focalRange,
                focalDistance: 70
            }
        },
        light: {
            main: {
                intensity: 1,
                shadow: true,
                shadowQuality: 'high',
                alpha: 30
            },
            ambient: {
                intensity: 0
            },
            ambientCubemap: {
                texture: 'data-gl/asset/pisa.hdr',
                exposure: 2,
                diffuseIntensity: 1,
                specularIntensity: 1
            }
        }
    },
    series: [{
        type: 'bar3D',
        silent: true,
        shading: 'realistic',
        realisticMaterial: {
            roughness: 0.5,
            metalness: 0
        },
        instancing: true,
        barSize: 0.6,
        data: [],
        lineStyle: {
            width: 4
        },
        itemStyle: {
            color: "#fff"
        },
        animation: false,
        animationDurationUpdate: UPDATE_DURATION
    }]
});
setTimeout(function() {
    initVisualizer();
});
});
目录
相关文章
|
6月前
echarts 柱状图/折线图x轴坐标间隔
echarts 柱状图/折线图x轴坐标间隔
225 0
|
1月前
|
JSON JavaScript 前端开发
vue中使用echarts实现省市地图绘制,根据数据在地图上显示柱状图信息,增加涟漪特效动画效果
vue中使用echarts实现省市地图绘制,根据数据在地图上显示柱状图信息,增加涟漪特效动画效果
415 0
|
3月前
Echarts——饼图折线图柱状图相互转换
Echarts——饼图折线图柱状图相互转换
134 0
|
4月前
【详细流程】vue+Element UI项目中使用echarts绘制圆环图 折线图 饼图 柱状图
【详细流程】vue+Element UI项目中使用echarts绘制圆环图 折线图 饼图 柱状图
390 0
|
5月前
|
数据可视化 JavaScript 前端开发
使用 ECharts 绘制3D饼图,立体效果华丽渲染!
使用 ECharts 绘制3D饼图,立体效果华丽渲染!
|
5月前
|
JavaScript Apache 容器
如何使用ECharts制作一个简单的柱状图
如何使用ECharts制作一个简单的柱状图
77 0
|
6月前
|
Web App开发 前端开发 JavaScript
Spring Boot整合 mybatisplus(后端) Vue+echarts+Element UI+axios(前端)---前后端项目实例demo
Spring Boot整合 mybatisplus(后端) Vue+echarts+Element UI+axios(前端)---前后端项目实例demo
139 1
|
6月前
|
JSON 程序员 定位技术
使用echarts+echarts-gl绘制3d地图,实现地图轮播效果
记录一下大屏开发中使用到的echarts-gl 大屏的页面根据需求前前后后改了几个版本了,地图的样式也改了又改 这里记录一下,因为echarts属性用到的比较多也比较杂,防止以后需要用到忘记了
|
6月前
设置echarts的grid、tooltip、柱状图渐变色、折线图渐变色
设置echarts的grid、tooltip、柱状图渐变色、折线图渐变色
|
1月前
|
小程序 前端开发 JavaScript
微信小程序图表制作利器:ECharts组件的使用与技巧
微信小程序图表制作利器:ECharts组件的使用与技巧
60 1
下一篇
无影云桌面