1. 程式人生 > >用echarts3和worldcloud製作炫酷的字元雲圖

用echarts3和worldcloud製作炫酷的字元雲圖

        最近有個專案需要做出雲圖來,一開始還不知道雲圖是什麼鬼,直到需求在網上找了個圖我才恍然大悟,但是大悟完就開始一臉懵逼了,這玩意怎麼做?因為當時專案緊,專案經理就先叫我用photoshop畫了一個雲圖給貼上了~~最近聽同事說echart也可以實現的,就又去煩了好大一會兒,才發現echarts3的例子中並沒有雲圖的例子,只有echarts2中有,然後試著把2中的程式碼弄到3下面,果然不出所料的報錯了,於是就上網找方法,網上給出的解釋是得引入一個worldcloud.js檔案。下面就不廢話直接上程式碼了~

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="js/jquery.min.js"></script>
    <script src="js/echarts.js"></script>
    <script src="js/worldcloud.js"></script>
</head>
<body>
    <div id="main" style="width:600px;height:400px;"></div>
    <script>
    $(function(){
        echartsCloud();//初始化echarts圖
    })
function echartsCloud(){
    // 基於準備好的dom,初始化echarts例項
        var myChart = echarts.init(document.getElementById('main'));

    myChart.setOption({
        title: {
            text: 'echarts3雲圖展示'
        },
        tooltip: {},
        series: [{
            type : 'wordCloud',  //型別為字元雲
                shape:'smooth',  //平滑
                gridSize : 2, //網格尺寸
                size : ['80%','80%'],
                //sizeRange : [ 50, 100 ],  
                rotationRange : [ 46, 80 ], //旋轉範圍
                textStyle : {  
                    normal : {
                        fontFamily:'sans-serif',
                        color : function() {  
                            return 'rgb('  
                                    + [ Math.round(Math.random() * 160),  
                                            Math.round(Math.random() * 160),  
                                            Math.round(Math.random() * 160) ]  
                                            .join(',') + ')';  
                        }  
                    },  
                    emphasis : {  
                        shadowBlur : 5,  //陰影距離
                        shadowColor : '#333'  //陰影顏色
                    }  
                },
                data:[],
        }]
    });
    // 非同步載入資料
    $.get('./cloud.json').done(function (data) {
        // 填入資料
        myChart.setOption({
            series: [{
                data: data.dataCloud
            }]
        });
    });
}  


    </script>
</body>
</html>
        上面有詳細的註釋,我也不多廢話了,主要要注意的還是json資料的格式,今天寫的時候老是請求不成功,網上看了各種方法都試了還是不行,最後去百度搜json找線上解析的網站上校驗才發現我的json格式寫錯了,多加了一個逗號,浪費我了一個多小時的時間,哎~~看著落日又想起了我在夕陽下的奔跑,那是我失去的青春~~哈哈,下面是我寫的json檔案,各位要引以為戒呀。
{
"dataCloud":[
{"name": "雲圖","value": "200"},
{"name": "是個啥","value": "156"},
{"name": "他啥都不是","value": "122"},
{"name": "就是他呆子","value": "119"},
{"name": "傻子和瘋子","value": "108"},
{"name": "營養快線","value": "101"},
{"name": "哈哈哈到家","value": "96"},
{"name": "瑞士軍刀","value": "84"},
{"name": "DW情侶對錶","value": "58"},
{"name": "清風抽紙","value": "55"},
{"name": "OPPO R9S","value": "46"},
{"name": "這一刻更清晰","value": "28"},
{"name": "呵呵舊宮style","value": "27"},
{"name": "債券評級","value": "26"},]
}

        各位看官看到這可別急著複製貼上,因為這個json是錯誤的!!知道錯誤在哪麼?就是因為債券評級花括號後面、中括號前面的逗號~~最後一個逗號一定要去掉,否則ajax會獲取不到json檔案中的資料喲。。。而且這裡還有一個要注意的就是value值一定要按照從大到小的順序來寫,否則你會發現你的name和value會不對照~~

        剛剛又發現個問題就是要注意我上面引入js檔案的引入順序,一定要吧worldcloud.js放在echarts後面引入,否則會報錯。

最後把演示地址給你們貼上:http://webmq.cn/echartsCloud/2-1.html

下載地址是:http://webmq.cn/echartscloudzip.zip