没什么卵用的ajax+D3.js

没什么卵用的ajax+D3.js


如题 用来画图谱

<script type="text/javascript">
                    $(document).ready(function(){
                        $('button').click(function DoAjax(){
            var temp=$('#search-recipeKG-text').val()
            $.ajax({
                url:'',           //url相当于 form 中的 action
                type:'GET',            //type相当于form 中的 method
                data:{'search-recipeKG-text':temp},       // data:传人的数据 dat为任意设置的内容,相当于模版中的{author:lee}
                success:function(arg){     //成功执行  console.log() 函数 arg 为HttpResponse 返回的值
                    var obj=jQuery.parseJSON(arg)    //转化成JS识别的对象
                    console.log(obj)          //打印obj
                    console.log(arg)              //json.dumps(data) 序列化后的数据
                    console.log('request.POST 提交成功')
                    var str='';
                    str+='<div class="col-lg-8">';
                    str+='<div class="card">';
                        str+='<div class="card-body" >';
                            str+='<div id="id1">';
                                    var height=600;
                                    var width=650;

                                    var colors = ['#6ca46c', '#4e88af', '#ca635f', '#d2907c', '#d6744d', '#ded295'];

                                    var svg=d3.select("#id1")
                                        .append("svg")
                                        .attr("width",width)
                                        .attr("height",height);

{#                                  利用d3.forceSimulation()定义关系图 包括设置边link、排斥电荷charge、关系图中心点#}
                                    var simulation = d3.forceSimulation()
	                                    .force("link", d3.forceLink().id(function(d) {
	                                        return d.id;
	                                    }))
	                                    .force("charge", d3.forceManyBody())
	                                    .force("center", d3.forceCenter(width / 2, height / 2));

{#                                  存储关系图的数据#}
	                                var graph=obj;

                                    //D3映射数据至HTML中
	    	                        //g用于绘制所有边,selectALL选中所有的line,并绑定数据data(graph.links),enter().append("line")添加元素
	    	                        //数据驱动文档,设置边的粗细
                                    //所有线宽度均为1
	    	                        var link = svg.append("g").attr("class","links").selectAll("line").data(graph.links).enter()
	    	                        .append("line").attr("stroke-width", function(d) {
	    		                        //return Math.sqrt(d.value);
	    		                        return 1;
	    	                        });

                                    //添加所有的点
	    	                        //selectAll("circle")选中所有的圆并绑定数据,圆的直径为d.size
	    	                        //再定义圆的填充色,同样数据驱动样式,圆没有描边,圆的名字为d.id
	    	                        //call()函数:拖动函数,当拖动开始绑定dragstarted函数,拖动进行和拖动结束也绑定函数
	    	                        var node = svg.append("g").attr("class", "nodes").selectAll("circle").data(graph.nodes).enter()
	    	                        .append("circle").attr("r", function(d) {
	    		                        return d.size;
	    	                        }).attr("fill", function(d) {
	    		                        return colors[d.group];
	    	                        }).attr("stroke", "none").attr("name", function(d) {
	    		                        return d.id;
	    	                        }).call(d3.drag()
	    		                        .on("start", dragstarted)
	    		                        .on("drag", dragged)
	    		                        .on("end", dragended)
	    	                        );

                                    //显示所有的文本
                                    //设置大小、填充颜色、名字、text()设置文本
                                    //attr("text-anchor", "middle")文本居中

                                    var text = svg.append("g").attr("class", "texts").selectAll("text").data(graph.nodes).enter()
                                    .append("text").attr("font-size", function(d) {
                                        return d.size;
                                    }).attr("fill", function(d) {
                                        return colors[d.group];
                                    }).attr('name', function(d) {
                                        return d.id;
                                    }).text(function(d) {
                                        return d.id;
                                    }).attr('text-anchor', 'middle').call(d3.drag()
                                        .on("start", dragstarted)
                                        .on("drag", dragged)
                                        .on("end", dragended)
                                    );


                                        //圆增加title
                                    node.append("title").text(function(d) {
                                            return d.id;
                                        })

                                        //simulation
                                        //ticked 数据初始化,并生成图形

                                        simulation
                                            .nodes(graph.nodes)
                                            .on("tick", ticked);

                                        simulation.force("link")
                                            .links(graph.links);


                                        //开始拖动并更新相应的点
	                                function dragstarted(d) {
	                                    if (!d3.event.active) simulation.alphaTarget(0.3).restart();
                                        d.fx = d.x;
	                                    d.fy = d.y;
                                        //dragging = true;
	                                }

	                                //拖动进行中
	                                function dragged(d) {
	                                    d.fx = d3.event.x;
	                                    d.fy = d3.event.y;
	                                }

	                                //拖动结束
                                    function dragended(d) {
	                                    if (!d3.event.active) simulation.alphaTarget(0);
	                                    d.fx = null;
	                                    d.fy = null;
	                                    //dragging = false;
	                                }

                                    //tick()函数确定link线的起始点x、y坐标 node确定中心点 文本通过translate平移变化
                                        function ticked() {
                                    link
                                        .attr("x1", function(d) {
                                            return d.source.x;
                                        })
                                        .attr("y1", function(d) {
                                            return d.source.y;
                                        })
                                        .attr("x2", function(d) {
                                            return d.target.x;
                                        })
                                        .attr("y2", function(d) {
                                            return d.target.y;
                                        });

                                    node
                                        .attr("cx", function(d) {
                                            return d.x;
                                        })
                                        .attr("cy", function(d) {
                                            return d.y;
                                        });

                                    text.
                                    attr('transform', function(d) {
                                        return 'translate(' + d.x + ',' + (d.y + d.size / 2) + ')';
                                    });
                                }
                                    str+='</div>';
                                    str+='</div>';
                                    str+='</div>';
                                    str+='</div>';
                                    console.log(str)
                                    $("#show").html(str);
                        },
                                            error:function(){
                        //失败
                                                console.log('失败')
                                            }
                                        });
                                    });
                    });
                </script>

版权声明:本文为weixin_44191888原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。