zoukankan      html  css  js  c++  java
  • HTML页面关键词随机分布布局

    结合underscore-min.js,和D3.js 绘制HTML关键词随机分布

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <script src="./js/jquery-1.8.3.min.js"></script>
    <script type="text/javascript" src="./js/underscore.js"></script>
    <script type="text/javascript" src="http://t.datastory.com.cn/resources/js/lib/d3.v3.min.js?version=0.2.22"></script>
    <script type="text/javascript" src="http://t.datastory.com.cn/resources/js/lib/d3.layout.cloud.js?version=0.2.22"></script>
    </head>
    <body>
    <div id="keywordDist" style="400px;height:280px;"></div>
    </body>
    </html>
    <script>
    //关键词分布
    frepkeywordstat();
    
    function frepkeywordstat(){
        if (!$.support.leadingWhitespace) {
            $("#keywordDist").html("请使用Chrome浏览器以获得最佳浏览体验");
            return;
        }
        var lvalues = [];
        var keyword = "泽泽$1|文晖$2";
        
        if(keyword && keyword.length){
            var ls = keyword.split("|");
            if(ls==null||ls.length<=0){
                 $("#keywordDist").html('<div style="margin-top: 140px;margin-left: 180px;">暂无数据...</div>');
                return;
            }
            $.each(ls, function(key, value){
                var items = value.split("$");
                
                if(items==null||items.length<2){
                    return true;
                }
                var p = {};
                if(items.length == 2){
                    p.text = items[0];
                    p.size = items[1];
                    lvalues.push(p);
                }else if(items.length == 3){
                    p.text = items[0];
                    p.size = items[2];
                    lvalues.push(p);
                }
                if(lvalues.length >= 25){
                    return false;
                }
            });
            
            if(!lvalues.length){        
                $("#keywordDist").html('<div style="margin-top: 140px;margin-left: 180px;">暂无数据...</div>');
                return;
            }
        }else{
            $("#keywordDist").html('<div style="margin-top: 140px;margin-left: 180px;">暂无数据...</div>');
            return;
        }
        lvalues = _.sortBy(lvalues, function(o1){return parseInt(o1.size)});
        var scale = d3.scale.linear()
            .domain([parseInt(lvalues[0].size), parseInt(lvalues[lvalues.length-1].size)])
            .range([20,45]);
        $("#keywordDist").html("");
        d3.layout.cloud().size([420, 280])
            .words(lvalues)
            .rotate(function() { return Math.ceil(Math.random()*40)-20; })
            .font("Impact")
            .fontSize(function(d) { return scale(parseInt(d.size))})
            .on("end", draw)
            .start();
    }
    
    function draw(words) {
        var fill = d3.scale.category20();
        d3.select("#keywordDist").append("svg")
            .attr("width", 420)
            .attr("height", 280)
            .append("g")
            .attr("transform", "translate(200, 160)")
            .selectAll("text")
            .data(words)
            .enter().append("text")
            .style("font-size", function(d) { return d.size + "px"; })
            .style("font-family", "Impact")
            .style("fill", function(d, i) { return fill(i); })
            .attr("text-anchor", "middle")
            .attr("transform", function(d) {
                return "translate(" + [d.x, d.y] + ")rotate(" + d.rotate + ")";
            })
            .text(function(d) { return d.text; })
            .style("opacity", 1e-6)
            .transition()
            .duration(1000)
            .style("opacity", 1);
    }
    </script>
  • 相关阅读:
    bzoj 1061 单纯形法,或转化网络流(待补)
    bzoj 1007 计算几何,单调栈
    bzoj 1015 并查集,离线
    bzoj 1013 高斯消元
    java类继承HttpServlet类实现Servlet程序出现405错误:HTTP method POST is not supported by this URL
    算法的特性和算法设计的要求
    Java实现自定义异常类
    怎么查看 MySQL 数据文件在当前电脑的存储位置
    数据结构的分类
    JS实现“全选”和"全不选"功能
  • 原文地址:https://www.cnblogs.com/zeze/p/5397793.html
Copyright © 2011-2022 走看看