日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python知识图谱可视化_知识图谱可视化

發布時間:2023/12/10 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python知识图谱可视化_知识图谱可视化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

## 人物關系知識圖譜

#### 一、背景

將結構化數據通過關系預處理程序處理為圖數據庫可以查詢的數據,示例是將其中一部分(人物關系數據)可視化表示。

#### 二、用到的技術

技術點:圖數據庫Neo4j,d3.js,java,css,spring boot

開發工具:IDEA專業版(可找學生賬號注冊免費使用一年,社區版不支持WEB開發)

#### 三、項目結構以及代碼實現過程

實現思路這樣:

1,先定義基礎的展示頁面index.html

2、完成畫圖js(graph.js)

3,提供一個基礎的拿數據接口加載測試繪圖數據和繪圖需要的數據(例如節點選中之后的小圖標加載)

4、頁面從數據接口請求數據之后,調用繪圖JS在頁面完成畫圖操作(請求數據的接口可以很方便的改為從圖數據庫拿取數據進行展示)

主要文件目錄說明:

>1、data目錄

bg.jpg可視化背景圖片數據

CircularPartition.json節點圓形分區圖工具欄需要加載的數據

test.json可視化需要展示的數據格式

>2、images

此目錄存儲節點屬性圖片數據

>3、js

d3.js version-3.2.8

>4、src

JS以及其它HTML等源碼

>5、index.html

知識圖譜可視化入口文件

>6、拿數據接口

通過數據Type id加載圓形分區圖數據和測試知識圖譜構圖數據(type等于1加載圓形分區數據,type是等于2加載測試知識圖譜展示數據)

GET:http://localhost:7476/knowledge-graph/hello/dataSource/type/{id}

做圖過程(graph.js):

```

// 定義畫布 (radius是鼠標點擊生成圓形分區圖的半徑)

var width = 1345, height = 750, color = d3.scale.category20();

var svg = d3.select("body")

.append("svg")

.attr("id", "svgGraph")

.attr("width", width)

.attr("height", height)

.append("g")

.attr("id", "svgOne")

.call(d3.behavior.zoom() // 自動創建事件偵聽器

.scaleExtent([0.1, 10]) // 縮放允許的級數

.on("zoom", zoom)

)

.on("dblclick.zoom", null); // remove雙擊縮放

```

```

// 實時獲取SVG畫布坐標

function printPosition() {

var position = d3.mouse(svg.node());

return position;

}

```

```

// 縮放函數

function zoom() {

// translate變換矢量(使用二元組標識)scale當前尺度的數字

svg.attr("transform", "translate(" + d3.event.translate + ")scale(" + d3.event.scale + ")"); // 畫布縮放與移動

// svg.attr("transform", "scale(" + d3.event.scale + ")"); // 畫布縮放

}

```

```

// 設置連線箭頭屬性

function setMarkers() {

svg.append("g")

.attr("id", "lineAndText")

.selectAll("marker")

.data(edges)

.enter()

.append("marker")

.attr("id", function (d) {

return d.id;

})

.attr("viewBox", "0 -5 10 10") // 坐標系的區域

.attr("class", "arrow")

.attr("refX", 27) // refX,refY在viewBox內的基準點,繪制時此點在直線端點上(要注意大小寫)

.attr("refY", 0)

.attr("markerWidth", 10) // 標識的大小

.attr("markerHeight", 18) // 標識的大小

.attr("markerUnits", "userSpaceOnUse") // 標識大小的基準,有兩個值:strokeWidth(線的寬度)和userSpaceOnUse(圖形最前端的大小)

.attr("orient", "auto") // 繪制方向,可設定為:auto(自動確認方向)和 角度值

.append("path")

.attr("d", "M0,-5L10,0L0,5")

.attr("fill", "#ccc");

}

```

```

// 添加連線

function add_edges() {

setMarkers(); // 設置連線箭頭屬性

var svg_edges = svg.select("#lineAndText")

.selectAll("line")

.data(edges)

.enter()

.append("line")

.attr("id", function (d) {

return d.id;

})

.style("stroke", "#ccc")

.style("stroke_width", 1)

.attr("marker-end", function (d) {

return "url(#" + d.id + ")";

})

.attr("stroke", "#999")

.on("mouseover", function (d) { // 鼠標選中時觸發

mouseSelectLine(d);

addToolTip(d); //添加提示框的div

})

.on("mouseout", function () {

d3.select("#relation").remove();

d3.select("#tooltip").remove();

});

return svg_edges;

}

```

```

// 求直線與圓的交點

// 函數參數說明:cx:圓X軸坐標 cy:圓y軸坐標 r:圓半徑 stx:起點直線的X軸坐標 sty:起點直線的軸坐標 edx:終點直線的X軸坐標 edy:終點直線的Y軸坐標

// 返回值:交點坐標(x,y)

function getPoint(cx, cy, r, stx, sty, edx, edy) {

// 求直線

var k = (edy - sty) / (edx - stx);

var b = edy - k * edx;

//列方程

var x1, y1, x2, y2;

var c = cx * cx + (b - cy) * (b - cy) - r * r;

var a = (1 + k * k);

var b1 = (2 * cx - 2 * k * (b - cy));

var tmp = Math.sqrt(b1 * b1 - 4 * a * c);

x1 = (b1 + tmp) / (2 * a);

y1 = k * x1 + b;

x2 = (b1 - tmp) / (2 * a);

y2 = k * x2 + b;

// 過濾距離最近的坐標

var p = {};

function lineIf(lx, ly, lxx, lyy) {

var d = Math.sqrt((lx - lxx) * (lx - lxx) + (ly - lyy) * (ly - lyy));

return d;

}

if (cx != stx) { // stx, sty

var d1 = lineIf(x1, y1, stx, sty);

var d2 = lineIf(x2, y2, stx, sty);

if (d1 < d2) {

p.x = x1;

p.y = y1;

} else {

p.x = x2;

p.y = y2;

}

} else { // edx, edy

var d1 = lineIf(x1, y1, edx, edy);

var d2 = lineIf(x2, y2, edx, edy);

if (d1 < d2) {

p.x = x1;

p.y = y1;

} else {

p.x = x2;

p.y = y2;

}

}

return p;

}

```

```

// 鼠標選中關系添加顯示效果

function mouseSelectLine(d) {

var p1 = getPoint(d.source.x, d.source.y, 20, d.source.x, d.source.y, d.target.x, d.target.y);

var p2 = getPoint(d.target.x, d.target.y, 20, d.source.x, d.source.y, d.target.x, d.target.y);

var json = [p1, p2];

//構造默認線性生成器

var line = d3.svg.line()

.x(function (d) { //指定x存取器為:取每個數據元素的x屬性的值

return d.x;

})

.y(function (d) { //指定y存取器為:取每個數據元素的y屬性的值

return d.y;

});

svg.append('path')

.attr({

"d": function () { //生成路徑數據

return line(json);

},

"id": "relation"

})

.style({

"stroke": "#87CEFA", //path顏色

"stroke-width": 6 //path粗細

});

}

```

```

// 添加節點

function add_nodes() {

var svg_nodes = svg.append("g")

.attr("id", "circleAndText")

.selectAll("circle")

.data(nodes)

.enter()

.append("g")

.call(force.drag().on("dragstart", function (d) {

d3.select("#eee").remove(); // 刪除節點扇形

d3.select("#sel").remove(); // 刪除節點選中

d3.event.sourceEvent.stopPropagation(); // 畫布拖動與節點拖動分離

d3.select(this).attr("r", 20 * 2);

})

.on("dragend", function (d) {

d3.select("#eee").remove(); // 刪除節點扇形

d3.select("#sel").remove(); // 刪除節點選中

d.fixed = true; // 拖動結束后節點固定

d3.select(this).attr("r", 20);

})

)

.on("click", function (d) { // 鼠標點擊時觸發

// 在當前節點處畫三頁扇形

d3.select("#eee").remove();

drawCirclePartition(d);

})

.on("mouseover", function (d) { // 光標放在某元素上s

mouseSelect(d); // 鼠標選中效果

addToolTip(d); //添加提示框的div

})

.on("mouseout", function (d) {

d3.select("#sel").remove(); // 刪除節點選中

d3.select("#tooltip").remove();

d3.select("#tooltipCir").remove();

});

svg_nodes.append("circle")

.attr("id", function (d) {

return d.index;

})

.attr("r", 20)

.attr("fill", function (d, i) {

return color(i);

});

svg_nodes.append("image")

.attr("class", "circle")

.attr("xlink:href", function (d) {

var img = d.image;

if (img != undefined) {

return "http://222.216.195.154:7476/knowledge-graph/path/images/" + d.image

} else {

return null;

}

})

.attr("x", "-20px")

.attr("y", "-20px")

.attr("width", "40px")

.attr("height", "40px");

svg_nodes.append("svg:text")

.style("fill", "#ccc")

.attr("dx", 20)

.attr("dy", 8)

.text(function (d) {

return d.name

});

return svg_nodes;

}

```

```

//添加提示框的div

function addToolTip(d) {

var htmlStr;

if (d.source && d.target && d.type) {

htmlStr = "name:" + d.type + "

";

} else {

htmlStr = "id:" + d.id + "

" + "name:" + d.name + "

";

}

var position = printPosition(d);

var tooltip = d3.select("body").append("div")

.attr("class", "tooltip") //用于css設置類樣式

.attr("opacity", 0.0)

.attr("id", "tooltip");

htmlStr = htmlStr + "locx:" + position[0] + "

" + "locy:" + position[1] + "

";

if (d.image != undefined) {

htmlStr = htmlStr + "

";

}

tooltip.html(htmlStr)

.style("left", (d3.event.pageX) + "px")

.style("top", (d3.event.pageY + 20) + "px")

.style("opacity", 0.75);

}

function addToolTipCir(d) {

var htmlStr;

if (d.name == "?") {

htmlStr = "notes:解鎖當前節點

";

}

if (d.name == "?") {

htmlStr = "notes:裁剪當前節點與關系

";

}

if (d.name == "?") {

htmlStr = "notes:拓展當前節點與關系

";

}

if (d.name == "◎") {

htmlStr = "notes:釋放所有鎖定的節點

";

}

if (d.name == "?") {

htmlStr = "notes:鎖定所有節點

";

}

var tooltip = d3.select("body").append("div")

.attr("class", "tooltip") //用于css設置類樣式

.attr("opacity", 0.0)

.attr("id", "tooltipCir");

tooltip.html(htmlStr)

.style("left", (d3.event.pageX) + "px")

.style("top", (d3.event.pageY + 20) + "px")

.style("opacity", 0.75);

}

```

```

// 生成圓弧需要的角度數據

var arcDataTemp = [{startAngle: 0, endAngle: 2 * Math.PI}];

var arc_temp = d3.svg.arc().outerRadius(26).innerRadius(20);

```

```

// 鼠標選中節點添加顯示效果

var svg_selectNode;

function mouseSelect(d) {

svg_selectNode = svg.append("g")

.attr("id", "sel")

.attr("transform", "translate(" + d.x + "," + d.y + ")")

.selectAll("path.arc")

.data(arcDataTemp)

.enter()

.append("path")

.attr("fill", "#87CEFA")

.attr("d", function (d, i) {

return arc_temp(d, i);

});

}

```

```

// 全局停止力作用之間的影響

function stopForce() {

for (var i = 0; i < nodes.length; i++) {

var obj = nodes[i];

obj.fixed = true;

}

}

```

```

// 全局開始力作用之間的影響

function startForce() {

for (var i = 0; i < nodes.length; i++) {

var obj = nodes[i];

obj.fixed = false;

}

force.resume();

}

```

```

var nodesMark = [], edgesMark = [], indexNodeMark = []; // 緩存中所有已加載的數據標記

// 節點添加圓形分區(添加三頁扇形)

function drawCirclePartition(d) {

// 圓形分區布局(數據轉換)

var radius = 40;

var partition = d3.layout.partition()

.sort(null)

.size([2 * Math.PI, radius * radius]) // 第一個值域時2 PI,第二個值時圓半徑的平方

.value(function (d) {

return 1;

});

// 繪制圓形分區圖

// 如果以圓形的形式來轉換數據那么d.x和d.y分別代表圓弧的繞圓心

// 方向的起始位置和由圓心向外的起始位置d.dx和d.dy分別代表各自的寬度

var arc = d3.svg.arc()

.startAngle(function (d) {

return d.x;

})

.endAngle(function (d) {

return d.x + d.dx;

})

.innerRadius(function (d) {

return 26;

})

.outerRadius(function (d) {

return 80;

});

var circlePart = partition.nodes(dataCirclePartition);

// "?" 釋放固定的節點

function releaseNode() {

d.fixed = false;

// force.start(); // 開啟或恢復結點間的位置影響

force.resume();

}

// "?" 刪除當前節點以及當前節點到其它節點之間的關系

function removeNode() {

var newNodes = [];

for (var i = 0; i < nodes.length; i++) {

var obj = nodes[i];

if (obj.id != d.id) {

newNodes.push(obj);

}

}

var newedges = [];

for (var i = 0; i < edges.length; i++) {

var obj = edges[i];

if ((d.index != obj.source.index) && (d.index != obj.target.index)) {

newedges.push(obj);

}

}

nodes = newNodes;

edges = newedges;

var nIndex = function (d) {

return d.index;

};

var lIndex = function (d) {

return d.id;

};

// 通過添加'g'元素分組刪除

svg.select("#circleAndText").selectAll("circle")

.data(nodes, nIndex)

.exit()

.remove();

svg.select("#circleAndText").selectAll("image")

.data(nodes, nIndex)

.exit()

.remove();

svg.select("#circleAndText").selectAll("text")

.data(nodes, nIndex)

.exit()

.remove();

svg.select("#lineAndText").selectAll("line")

.data(edges, lIndex)

.exit()

.remove();

svg.select("#lineAndText").selectAll("text")

.data(edges, lIndex)

.exit()

.remove();

}

```

```

// 擴展當前節點,距離為1

// 1.從rawData(rawNodes/rawEdges)中找出當前節點需要擴展的節點與關系數據

// 2.拿出需要擴展的數據到node/edges中去除已經綁定圖形元素的數據

// 3.將過濾出的未綁定圖形元素需要擴展的數據重新調用構圖方法進行構圖

// 添加從服務器實時加載數據的功能:基本思想與1~3類似

function extendNode() {

var index = d.index;

var arrEdges = [], arrIndex = [], arrNodes = [];

for (var i = 0; i < rawEdges.length; i++) {

if ((index == rawEdges[i].source.index) || (index == rawEdges[i].target.index)) {

arrEdges.push(rawEdges[i]);

if (index != rawEdges[i].source.index) {

arrIndex.push(rawEdges[i].source.index);

} else if (index != rawEdges[i].target.index) {

arrIndex.push(rawEdges[i].target.index);

}

}

edgesMark.push(rawEdges[i].id);

}

for (var i = 0; i < rawNodes.length; i++) {

for (var j = 0; j < arrIndex.length; j++) {

var obj = arrIndex[j];

if (rawNodes[i].index == obj) {

arrNodes.push(rawNodes[i]);

}

}

nodesMark.push(rawNodes[i].id);

indexNodeMark.push(rawNodes[i].index);

}

// nodes.push(arrNodes);

// edges.push(arrEdges);

var nodesRemoveIndex = [];

for (var i = 0; i < arrNodes.length; i++) {

var obj = arrNodes[i];

for (var j = 0; j < nodes.length; j++) {

var obj2 = nodes[j];

if (obj.index == obj2.index) {

nodesRemoveIndex.push(i);

}

}

}

var edgesRemoveIndex = [];

for (var i = 0; i < arrEdges.length; i++) {

var obj = arrEdges[i];

for (var j = 0; j < edges.length; j++) {

var obj2 = edges[j];

if (obj.id == obj2.id) {

edgesRemoveIndex.push(obj.id);

}

}

}

var coverNodes = [];

for (var i = 0; i < arrNodes.length; i++) {

var obj = arrNodes[i];

if (!isInArray(nodesRemoveIndex, i)) {

nodes.push(obj);

coverNodes.push(obj);

}

}

var coverEdges = [];

for (var i = 0; i < arrEdges.length; i++) {

var obj = arrEdges[i];

if (!isInArray(edgesRemoveIndex, obj.id)) {

edges.push(obj);

coverEdges.push(obj);

}

}

// console.log("找出需要擴展的數據");

// console.log(arrEdges);

// console.log(arrNodes);

// console.log("添加到原始需要綁定圖形元素的數據集集合/與rawNodes,rawEdges服務器加載的原始數據保持區分");

// console.log(nodes);

// console.log(edges);

// 添加從服務器請求擴展數據

// var url = "http://222.216.195.154:7476/knowledge-graph/hello/dataSource/node/extend/" + d.id + "";

// d3.json(url, function (error, json) { // 服務器加載知識圖譜數據

// if (error) {

// return console.warn(error);

// }

// console.log("從服務器請求的擴展數據:");

// var serverNodes = json.nodes;

// var serverEdges = json.links;

// console.log(serverNodes);

// console.log(serverEdges);

// console.log(nodesMark);

// console.log(edgesMark);

// // 重新設置INDEX

// var maxIndex = Math.max.apply(null, indexNodeMark);

// console.log("MAX:" + maxIndex);

//

// for (var i = 0; i < serverNodes.length; i++) {

// if (!isInArray(nodesMark, serverNodes[i].id)) {

// serverNodes[i].index = maxIndex + 1

// maxIndex = maxIndex + 1;

// nodes.concat(serverNodes[i]);

// console.log(serverNodes[i]);

// }

// }

// for (var i = 0; i < serverEdges.length; i++) {

// if (!isInArray(edgesMark, serverEdges[i].id)) {

// edges.concat(serverEdges);

// console.log(serverEdges[i]);

// }

// }

// console.log("服務器加載并且合并之后的數據:");

// console.log(nodes);

// console.log(edges);

// d3.select("#svgGraph").select("#svgOne").selectAll("*").remove(); // 清空SVG中的內容

// buildGraph();

// });

d3.select("#svgGraph").select("#svgOne").selectAll("*").remove(); // 清空SVG中的內容

buildGraph();

}

var arcs = svg.append("g")

.attr("id", "eee")

.attr("transform", "translate(" + d.x + "," + d.y + ")")

.selectAll("g")

.data(circlePart)

.enter()

.append("g")

.on("click", function (d) { // 圓形分區綁定Click事件

if (d.name == "?") {

releaseNode();

}

if (d.name == "?") {

removeNode();

}

if (d.name == "?") {

extendNode();

}

if (d.name == "◎") {

startForce();

}

if (d.name == "?") {

stopForce();

}

d3.select("#eee").remove();

d3.select("#tooltipCir").remove();

});

arcs.append("path")

.attr("display", function (d) {

return d.depth ? null : "none"; // hide inner ring

})

.attr("d", arc)

.style("stroke", "#fff")

.style("fill", "#A9A9A9")

.on("mouseover", function (d) {

d3.select(this).style("fill", "#747680");

addToolTipCir(d); //添加提示框的div

})

.on("mouseout", function () {

d3.select("#tooltipCir").remove();

d3.select(this).transition()

.duration(200)

.style("fill", "#ccc")

var array = printPosition();

var distance = Math.sqrt(Math.pow((d.x - array[0]), 2) + Math.pow((d.y - array[1]), 2));

if (distance > 80) {

d3.select("#eee").remove(); // 刪除節點扇形

}

});

arcs.append("text")

.style("font-size", "16px")

.style("font-family", "simsun")

.style("fill", "white")

.attr("text-anchor", "middle")

.attr("transform", function (d, i) {

// 平移和旋轉

var r = 0;

if ((d.x + d.dx / 2) / Math.PI * 180 < 180) // 0-180度以內的

r = 180 * ((d.x + d.dx / 2 - Math.PI / 2) / Math.PI);

else // 180-360度

r = 180 * ((d.x + d.dx / 2 + Math.PI / 2) / Math.PI);

return "translate(" + arc.centroid(d) + ")" + "rotate(" + r + ")";

})

.text(function (d) {

return d.name;

});

return arcs;

}

```

```

// 添加描述關系文字

function add_text_edges() {

var svg_text_edges = svg.select("#lineAndText")

.selectAll("line.text")

.data(edges)

.enter()

.append("text")

.attr("id", function (d) {

return d.id;

})

.style("fill", "#ccc")

.attr("x", function (d) {

return (d.source.x + d.target.x) / 2

})

.attr("y", function (d) {

return (d.source.y + d.target.y) / 2

})

.text(function (d) {

return d.type;

})

.on("mouseover", function (d) { // 鼠標選中時觸發

mouseSelectLine(d);

addToolTip(d); //添加提示框的div

})

.on("mouseout", function () {

d3.select("#relation").remove();

d3.select("#tooltip").remove();

})

.on("click", function () {

});

return svg_text_edges;

}

```

```

// 對于每一個時間間隔進行更新

function refresh() {

force.on("tick", function () { // 對于每一個時間間隔

// 更新連線坐標·

svg_edges.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;

});

// 更新節點以及文字坐標

svg_nodes.attr("transform", function (d) {

return "translate(" + d.x + "," + d.y + ")";

});

// 更新關系文字坐標

svg_text_edges.attr("x", function (d) {

return (d.source.x + d.target.x) / 2

})

.attr("y", function (d) {

return (d.source.y + d.target.y) / 2

});

});

}

```

```

var force, nodes = [], edges = [], rawNodes, rawEdges, mapNodes = new Map(); // 構建知識圖譜需要操作的數據 (rawNodes, rawEdges將加載的原始構圖數據緩存一份)

// 知識圖譜可視化構建

function graph(data) {

// 先清空布局中的圖形元素

// d3.select("#svgGraph").select("#svgOne").selectAll("*").remove();

// var serverD = data.nodes;

// var serverE = data.links;

// 去除NODES中重復的節點,如果有節點重復即將EDGES中的數據重新設置source值和target值

// serverD,serverE,nodes,edges

// var filterServerD = [];

// for (var i = 0; i < serverD.length; i++) {

// if (!isInArray(nodesIndexId, serverD[i].id)) {

// filterServerD.push(serverD[i]);

// }

// }

// 去重之后重新調整filterServerD的NODE index值

// mapNodes.forEach(function (value, key) {

// console.log(value);

// console.log(key);

// if (isInArray(nodesIndexId,key)){

//

// }

// });

// recordNodesIndex(serverD);

// console.log(nodesIndexValue);

// 多數組連接

// nodes = nodes.concat(data.nodes);

// edges = edges.concat(data.links);

// console.log(nodes);

// console.log(edges);

// rawNodes = nodes;

// rawEdges = edges;

// // 定義力布局(數據轉換)

// force = d3.layout.force()

// .nodes(nodes) // 指定節點數組

// .links(edges) // 指定連線數組

// .size([width, height]) // 指定范圍

// .linkDistance(150) // 指定連線長度

// // .gravity(0.02) // 設置引力避免躍出布局

// .friction(0.9) // 設置摩擦力速度衰減

// .charge(-400); // 相互之間的作用力

// force.start(); // 開始作用

// buildGraph();

}

```

```

var svg_edges, svg_nodes, svg_text_edges; // 需要動態更新的函數(dynamic update function)

// Strat build Knowledge Graph/Vault

function buildGraph() {

console.log("開始構建可視化知識圖譜:");

console.log(nodes);

console.log(edges);

svg_edges = add_edges(); // 添加連線與箭頭

svg_nodes = add_nodes(); // 添加節點與文字

svg_text_edges = add_text_edges(); // 添加描述關系的文字

refresh(); // 對于每一個時間間隔進行更新

force.resume(); // 必須添加否則圖形元素更新不及時

}

```

```

// 服務器加載數據

var dataCirclePartition;

function load() {

d3.json("http://222.216.195.154:7476/knowledge-graph/hello/dataSource/type/1", function (error, root) { // 服務器加載節點圓形分區數據

if (error) {

return console.warn(error);

}

dataCirclePartition = root;

});

d3.json("http://222.216.195.154:7476/knowledge-graph/hello/dataSource/type/2", function (error, json) { // 服務器加載知識圖譜數據

if (error) {

return console.warn(error);

}

console.log("初始加載:");

console.log(json.nodes);

console.log(json.links);

graph(json);

});

// d3.json("http://222.216.195.154:7476/knowledge-graph/hello/dataSource/node/extend/99817", function (error, json) { // 服務器加載知識圖譜數據

// if (error) {

// return console.warn(error);

// }

// console.log("初始加載:");

// console.log(json);

// graph(json);

// });

}

// 初始化圖數據庫配置信息

startNeo4j();

// 執行知識圖譜數據可視化

load();

// 傳入NODE ID與NODE INDEX,節點的INDEX與構圖時數據加載的順序密切相關

function loadById(id, maxNodeIndex, nodesIdList) {

// var para = ["id:" + id, "maxNodeIndex:" + maxNodeIndex, "nodesIdList:" + nodesIdList];

var para = {"id": id, "maxNodeIndex": maxNodeIndex, "nodesIdList": nodesIdList};

console.log(para);

d3.json("http://222.216.195.154:7476/knowledge-graph/hello/dataSource/node/idIndex/" + para, function (error, data) { // 服務器加載知識圖譜數據

if (error) {

return console.warn(error);

}

console.log("動態ID加載的數據:");

console.log(nodesMark);

console.log(edgesMark);

console.log(nodes);

console.log(edges);

console.log(data);

graph(data);

});

}

function loadZdrSearch(json) {

d3.json("http://222.216.195.154:7476/knowledge-graph/hello/dataSource/type/1", function (error, root) { // 服務器加載節點圓形分區數據

if (error) {

return console.warn(error);

}

dataCirclePartition = root;

});

graph(json);

}

// 執行知識圖譜數據可視化

// loadById(id);

```

啟動入口類KnowledgeGraphApplication之后,

調用接口:http://localhost:7476/knowledge-graph/hello/index

此接口調用控制類加載index.html,HTML中調用了js文件加載展示數據,詳細的實現過程請看完整的代碼注釋。

>代碼目錄結構說明一:

![代碼目錄結構說明](/contentImages/image/20180708/1NODaHkjOQEv1cSUoil.png)

>代碼目錄結構說明二:

![代碼目錄結構說明](/contentImages/image/20180708/URaahjGrTTzIC2iqcxV.png)

#### 四、可視化效果(所有可視化效果均帶有力布局效果)

######1.節點與關系均帶有選中效果,節點關系裁剪與擴展

?解鎖當前節點

? 剪切當前節點于關系

? 擴展當前節點與關系

? 固定所有節點

◎ 解鎖所有節點

>實體擴展功能:

![實體擴展功能](/contentImages/image/20180708/8dvzXzSMkz65KW1OFsd.png)

>節點效果:

![節點效果](/contentImages/image/20180708/o8Xhzc2DYLoNXfIzbMY.png)

######2.完整示例

>完整效果顯示示例一:

![完整示例](/contentImages/image/20180708/WowrmiblqPuogs6Wwgt.png)

>完整效果顯示示例二:

![](/contentImages/image/20180708/oosOoMBoeFcRGIKem79.png)

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的python知识图谱可视化_知识图谱可视化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

久久久久久久久久亚洲精品 | 亚洲成人中文在线 | 国产精品一区二区三区四 | 91精品视频导航 | 精品播放 | 亚洲永久国产精品 | 久草在线综合网 | 欧美日韩中文国产一区发布 | 久久综合狠狠综合 | 久久综合久久88 | 亚州精品天堂中文字幕 | 久久久久久黄 | 日韩城人在线 | 亚洲少妇激情 | 亚洲精品大全 | 婷婷丁香综合 | 欧美污在线观看 | 高清av在线免费观看 | 日韩欧美电影在线 | 精品久久久影院 | 免费观看国产精品视频 | 久久精品视频2 | 久久精品视频中文字幕 | 国产又粗又猛又色又黄视频 | a视频免费在线观看 | 精品国产123 | 国产原创在线观看 | 日韩色综合 | 色av婷婷 | 中文字幕电影高清在线观看 | 国产精品自拍在线 | 就要色综合 | 五月婷婷视频在线观看 | 日韩精品一区二区三区丰满 | 国产视频久久久 | 欧美日韩天堂 | 69精品人人人人 | 日韩二区在线播放 | 在线观看中文字幕dvd播放 | 999久久久久久 | 美女黄濒| 欧美日韩综合在线 | 日韩午夜高清 | 亚洲欧美日本一区二区三区 | 亚一亚二国产专区 | 久久国产精品一区二区三区四区 | 国产亚洲人| 少妇高潮流白浆在线观看 | 天天天干天天射天天天操 | 狠狠干激情 | 国产精品久久久一区二区三区网站 | 国产999精品久久久久久绿帽 | 久久国产经典 | 国产69精品久久久久99 | 久久激情视频免费观看 | 国产精品美女视频网站 | 国产精品99精品久久免费 | 国产高清视频在线免费观看 | 久久视频这里有久久精品视频11 | 亚洲 综合 国产 精品 | 97在线观 | 美女精品网站 | 91成人天堂久久成人 | 久久婷婷激情 | 日韩欧美69 | 中文av资源站 | 九九久久免费视频 | 天天射天天艹 | 国产一级在线 | 久章草在线观看 | 啪啪免费试看 | 国产免费观看av | 久草在线国产 | 欧美日韩色婷婷 | 亚洲精品国产自产拍在线观看 | 欧美成年性 | 成人黄色av免费在线观看 | 亚洲精品国产精品国自产观看 | 成年人视频免费在线 | 天天干天天操天天拍 | 精品主播网红福利资源观看 | 国产高清av在线播放 | 亚洲成人av片在线观看 | 丁香花在线观看视频在线 | 久久在线观看视频 | 人人爽夜夜爽 | 久久99在线视频 | 国产精品 日韩精品 | 91在线91| 五月天六月婷 | 欧美日韩一区二区在线观看 | 国产成人精品久久久 | 97在线观看免费观看高清 | 在线视频观看成人 | 国产视频精品久久 | 五月天中文字幕 | 久久精国产 | 亚洲涩涩网 | 久久久精品免费看 | 一区二区视频在线免费观看 | 国产99久久久国产精品免费二区 | 激情五月婷婷网 | 久久九九影视网 | 亚洲色图色 | 欧美专区国产专区 | 一性一交视频 | 在线国产精品视频 | 欧美激情亚洲综合 | 国产99在线播放 | 日韩精品一区二区三区在线视频 | 最新超碰在线 | 亚洲va欧洲va国产va不卡 | 成人在线视频免费观看 | 久久久人 | 久久免费的精品国产v∧ | 色偷偷av男人天堂 | 日本性xxxxx 亚洲精品午夜久久久 | 免费在线观看视频一区 | 黄色网址a| 色综合欧洲 | 国产欧美精品xxxx另类 | 韩日视频在线 | 久久久人| 黄色亚洲大片免费在线观看 | 成人小视频免费在线观看 | 99视频在线精品免费观看2 | 96精品视频 | 国产精品专区一 | 成人影片在线播放 | www.天天操.com | 成人av电影在线播放 | 亚洲 中文 欧美 日韩vr 在线 | 一区二区三区免费在线观看视频 | 在线观看久久久久久 | 日韩二区在线观看 | 亚洲精品视频免费 | 久久精品99北条麻妃 | 日本激情视频中文字幕 | 国内精品久久久久久中文字幕 | 免费看国产视频 | 在线 高清 中文字幕 | 免费日韩高清 | 一区二区视频电影在线观看 | 日韩经典一区二区三区 | 欧美伦理一区 | 一级a性色生活片久久毛片波多野 | 91精品伦理 | 亚洲精品国产精品久久99 | 五月精品 | 日韩欧美精品一区 | 日韩精品一区在线播放 | 国产91在线 | 美洲 | japanesexxxxfreehd乱熟 | 日韩久久一区二区 | 国产精品久久久网站 | 五月激情婷婷丁香 | 在线看成人av | 亚洲成人av片 | 日韩精品久久久久久久电影99爱 | 五月婷婷六月丁香在线观看 | 国产最顶级的黄色片在线免费观看 | 免费亚洲一区二区 | 久久狠狠一本精品综合网 | 成人丝袜 | 久久99国产综合精品免费 | 丰满少妇高潮在线观看 | 99久久夜色精品国产亚洲 | 免费黄色在线 | 97超碰资源网 | 91av资源网 | 黄色精品网站 | 欧美精品久久久 | 国产精品成人久久久久久久 | 99精品偷拍视频一区二区三区 | 亚洲春色综合另类校园电影 | 六月丁香婷婷久久 | www狠狠操 | 在线观看中文字幕一区二区 | 亚洲欧洲精品一区二区精品久久久 | 96亚洲精品久久久蜜桃 | 亚洲成人av电影在线 | 日韩激情一二三区 | 中文字幕国产视频 | 亚洲黄色免费在线 | 日日夜夜中文字幕 | 日韩精品一区电影 | 欧美日韩国产一区二 | 五月天中文字幕 | 国产日韩欧美在线播放 | 国产精品一区二区三区久久 | 激情五月婷婷丁香 | 国产精品不卡在线 | 在线成人一区 | 亚洲天天 | 韩日av在线 | 91麻豆精品91久久久久同性 | 久艹视频在线免费观看 | 精品国产伦一区二区三区免费 | 国产小视频免费在线观看 | 91porny九色在线播放 | 久久精品网站视频 | 日韩激情免费视频 | 91传媒免费观看 | 天天操天操 | 在线观看午夜 | 成人在线观看av | 日本韩国在线不卡 | 九热在线 | 成人免费xxxxxx视频 | 中文字幕资源网 | 久久精品香蕉 | 亚洲国产精品成人女人久久 | 九九久久久久久久久激情 | 久久久久久在线观看 | 国产精品一区二区久久 | 亚洲综合在线视频 | 亚洲精品美女久久 | 精品视频久久久久久 | 激情网五月婷婷 | 91一区二区在线 | 六月丁香综合网 | 亚洲一区 影院 | 亚洲一区二区三区精品在线观看 | 中文字幕色在线视频 | 天天干天天天 | 天堂中文在线视频 | 日日夜夜操操操操 | 日精品 | 国产视频资源 | 色婷在线 | 日韩欧美一区二区三区在线 | 婷婷激情小说网 | 91av久久 | 日韩中文字幕国产精品 | 久久精品艹 | 国产99在线播放 | 日韩午夜大片 | 在线看91| 正在播放国产91 | 日韩高清不卡一区二区三区 | 91尤物在线播放 | 亚洲午夜精品久久久久久久久久久久 | 久久免费毛片 | 天堂av色婷婷一区二区三区 | 人人爱人人添 | 狠狠天天| 超碰人人在线观看 | 国产精品岛国久久久久久久久红粉 | 国产精品99久久久久的智能播放 | 五月婷婷爱 | 亚洲欧美婷婷六月色综合 | 四虎国产精品永久在线国在线 | 97在线成人 | 精品国产综合区久久久久久 | 亚洲一二三在线 | 国产做爰视频 | 亚洲欧美日韩中文在线 | 美女福利视频在线 | 黄色免费观看 | 中文字幕 91| 99热都是精品 | 欧美激情综合五月 | 一区二区三区动漫 | v片在线播放 | 综合在线观看 | 久久久久女教师免费一区 | 91毛片在线 | 色中色综合 | 不卡av电影在线观看 | 日日干综合 | 五月天激情视频 | 色婷婷激情 | 免费a视频在线观看 | 色噜噜在线观看视频 | 亚洲成熟女人毛片在线 | 日韩av免费在线电影 | 国产超碰在线 | 亚洲精品午夜久久久久久久久久久 | av中文字幕不卡 | 91干干干 | 中文字幕色婷婷在线视频 | av网址最新 | 国产美女免费视频 | 国产精品日韩在线观看 | 久久看视频 | 久久久久久久福利 | 日韩视频在线观看免费 | 国内精品久久天天躁人人爽 | 中文字幕在线有码 | 一区在线免费观看 | 日韩网站在线 | 色婷婷六月天 | 欧美日韩亚洲第一页 | 成人久久久久久久久久 | 日日夜夜91| 国产无套一区二区三区久久 | 韩日精品中文字幕 | 在线成人一区 | 精品三级av | 亚洲毛片一区二区三区 | 午夜精品久久一牛影视 | 国产精品高清av | 丝袜美腿亚洲综合 | av超碰免费在线 | 日日爱网站 | 婷婷色视频| 久久免费看毛片 | 婷婷色中文网 | 992tv人人网tv亚洲精品 | 国产成人综合精品 | 久久婷亚洲五月一区天天躁 | 99久热在线精品视频成人一区 | 日本在线视频网址 | 欧美成人精品三级在线观看播放 | 国产精品你懂的在线观看 | 久久99免费视频 | 2020天天干天天操 | 高清国产在线一区 | 久久一线| 成人97视频一区二区 | 99久久精品一区二区成人 | 国产aaa大片| 欧洲一区二区三区精品 | 久久久久成人精品 | 久久不见久久见免费影院 | 免费久久久久久 | 国产一区二区不卡视频 | 天堂av高清 | 九月婷婷人人澡人人添人人爽 | 亚洲第一色 | 久久女教师 | 激情欧美一区二区免费视频 | 日本中文字幕电影在线免费观看 | 五月综合 | 综合久久精品 | 992tv在线观看网站 | 中文在线字幕免费观看 | 亚洲一二三区精品 | 中日韩在线 | 激情久久五月天 | 国产精品一级视频 | 天天天色综合a | 欧美日韩在线观看一区二区三区 | 亚洲精品视频观看 | 91网在线 | 免费看一级一片 | 在线免费成人 | 欧美精品久久久久久 | 久久久久久久久福利 | 夜夜夜 | 日韩在线首页 | 亚洲国产精品资源 | 国产一二三四在线视频 | 欧美 日韩 视频 | 色窝资源 | 国产一二三在线视频 | 中文字幕有码在线播放 | 国产精品久久久久久模特 | 又黄又刺激 | 日韩va亚洲va欧美va久久 | 亚洲国内精品视频 | 91麻豆精品国产午夜天堂 | 日韩网站一区二区 | av在线一级 | 婷婷av网站| 日韩高清无线码2023 | 麻豆影视在线播放 | 99视频精品免费视频 | 久青草国产在线 | 国产偷在线 | 91精品免费在线视频 | 精品亚洲成a人在线观看 | 亚洲 综合 国产 精品 | 国产一级视频在线观看 | 国产啊v在线| 国产在线观看你懂的 | 欧美日bb | 99精品视频免费在线观看 | 国产精品久久久久一区二区三区共 | 免费午夜av| 久久天堂网站 | 三级av网站 | 97色噜噜| 91久久奴性调教 | 456免费视频 | 日本黄色免费看 | 国产精品一区在线 | 在线成人中文字幕 | 日韩精品一区电影 | 成人高清av在线 | 日韩免费视频线观看 | av在线a | 国产精品免费在线播放 | 精品一区电影国产 | 久久精品久久精品久久精品 | 久久在现 | 日本精品久久久久中文字幕 | 国产精品麻 | 久久久久久美女 | 蜜桃av人人夜夜澡人人爽 | 五月婷婷综合色拍 | 国产中文字幕第一页 | 国产精品美女久久久久久久网站 | 在线观看久久 | 毛片永久新网址首页 | 成人精品一区二区三区中文字幕 | 综合在线亚洲 | 欧美亚洲成人免费 | 久久精品99国产 | 国产精品久久电影观看 | 色久av| 国产午夜av | 国产手机在线视频 | 久久久国产精品人人片99精片欧美一 | 麻豆传媒电影在线观看 | 精品国产aⅴ麻豆 | 欧洲性视频 | 制服丝袜一区二区 | 久草9视频| 久久新视频 | 2019中文 | 激情丁香久久 | 亚洲黄色成人 | 亚洲乱码久久 | 欧美在线不卡一区 | 天天干天天干天天干天天干天天干天天干 | 丁香高清视频在线看看 | av在线影视 | 激情在线网站 | 91精品啪在线观看国产81旧版 | 国产福利精品视频 | 欧美极品xxxxx | 久草电影在线观看 | 亚洲专区免费观看 | 色国产在线 | 亚洲精品乱码久久久久v最新版 | 国产精品原创在线 | 日韩理论在线观看 | 狠狠干狠狠插 | 久久久免费观看完整版 | 操夜夜操| 亚洲美女视频在线 | 日韩v欧美v日本v亚洲v国产v | 亚洲天堂网视频 | 91在线视频导航 | 美女黄视频免费 | 中文区中文字幕免费看 | 国产精品一区二区在线播放 | 香蕉91视频 | 在线观看日本韩国电影 | 亚洲精品美女久久久久 | 国产打女人屁股调教97 | 最新极品jizzhd欧美 | 日韩va在线观看 | 女人18毛片a级毛片一区二区 | 国产精品11 | 91免费版在线 | 国产流白浆高潮在线观看 | 免费在线观看av | 91手机电视 | 免费成人av在线看 | 午夜在线日韩 | 国产人成精品一区二区三 | 欧美一区二区三区在线看 | 国产精品久久三 | 成人av免费在线观看 | 国产精品粉嫩 | 久久国产麻豆 | 亚洲天天综合 | 国产精品美女久久久久久2018 | 成 人 黄 色 视频 免费观看 | 欧美性生活免费 | 国产一级片久久 | 伊甸园av在线 | 91网址在线看 | 国产成人av一区二区三区在线观看 | 国产视频综合在线 | 免费成人av电影 | 国产亚洲精品综合一区91 | 亚洲天天摸日日摸天天欢 | 婷婷色亚洲 | 五月天六月婷婷 | 午夜国产福利视频 | 奇米影视777四色米奇影院 | a极黄色片| 久久午夜影院 | www五月天com | 久久国产精品久久精品国产演员表 | 日本精品免费看 | 国产成人黄色片 | 日韩网站中文字幕 | 色网址99| 99爱在线 | 97精产国品一二三产区在线 | 免费碰碰| 国产高清成人 | 国产视频精选 | 少妇按摩av | 日韩黄色免费在线观看 | 人人爱在线视频 | 天天综合网~永久入口 | 久久不卡av| 国产一区二区久久久 | 99国产视频 | 欧美精品一二三 | 天天摸天天干天天操天天射 | 激情网第四色 | 欧洲激情在线 | 久久精品成人欧美大片古装 | 夜又临在线观看 | 蜜臀av性久久久久av蜜臀三区 | 奇米影视999 | 91少妇精拍在线播放 | 亚洲精品免费在线观看 | 欧美精品在线观看一区 | 麻豆国产精品永久免费视频 | 亚洲精欧美一区二区精品 | 欧美婷婷色 | 欧美性爽爽 | 欧美日韩高清一区二区 国产亚洲免费看 | 日日摸日日添日日躁av | 色婷婷亚洲婷婷 | 丁香激情综合久久伊人久久 | 在线观看www. | 91精品久久久久久久99蜜桃 | 超碰电影在线观看 | 狠狠干狠狠艹 | 国产中文字幕在线看 | 日本三级国产 | 一区二区三区四区五区在线 | 精品久久久成人 | 天天草天天干天天 | 精品中文字幕在线播放 | 又长又大又黑又粗欧美 | 中文字幕一区二区三 | 91精品国产电影 | 国产成人精品999在线观看 | 亚洲一区二区黄色 | 98涩涩国产露脸精品国产网 | 精品亚洲二区 | 在线视频18在线视频4k | 国产一区二区久久久 | 天堂黄色片 | 国产精品一区二区在线观看 | 国产在线a视频 | 欧美国产日韩一区二区三区 | wwwwwww色 | 国产不卡高清 | 久久免费看a级毛毛片 | 黄色成人影院 | 91在线蜜桃臀 | 在线免费高清 | 亚洲爱视频 | 99国产免费网址 | 亚洲精品玖玖玖av在线看 | 亚洲区视频在线观看 | 九九热视频在线播放 | 欧洲精品在线视频 | 日本高清中文字幕有码在线 | 91视频免费看网站 | 久久久福利影院 | 狠狠干狠狠久久 | 亚洲精品久久激情国产片 | 久久久久久久亚洲精品 | 亚洲欧洲视频 | 久久伦理电影网 | 在线视频一二三 | 国产日韩欧美在线影视 | 四虎永久国产精品 | 一级黄色片在线 | 欧美另类亚洲 | 91精选| 国产精品不卡在线播放 | av看片网址 | 国产精品免费在线播放 | 福利电影久久 | 亚洲www天堂com | 日韩不卡高清视频 | 国产极品尤物在线 | 欧美午夜精品久久久久久孕妇 | 一区二区中文字幕在线观看 | 国产一级免费av | 色综合久久99 | 欧美日韩在线视频一区 | 91视频在线 | 亚洲三级黄 | 成年人免费看的视频 | 久久精品亚洲综合专区 | 日韩理论在线观看 | 嫩草91影院 | 国产精品久久一区二区三区不卡 | 日韩精品一区二区在线观看视频 | 日韩在线观看第一页 | 久久成人精品电影 | 亚洲va欧美va人人爽 | 97超级碰碰碰碰久久久久 | 不卡电影免费在线播放一区 | 天天拍天天干 | 黄色一级大片在线免费看国产一 | 国产亚洲精品成人av久久影院 | 中文字幕av最新 | 国产精品久久久久久久久久99 | 久久久久久伊人 | 国产成人综合图片 | 日韩av线观看 | 在线中文字幕电影 | www.久久com | 国产精品美女久久久久久2018 | 国产综合精品久久 | 亚洲天堂精品视频 | 97福利在线 | 亚洲欧美婷婷六月色综合 | 久草国产在线观看 | 久久系列| 国产亚洲欧美在线视频 | 国产中文字幕在线 | 国产人成在线观看 | 午夜精品一区二区三区在线播放 | 97超碰在 | 成人国产精品免费观看 | 国产精品一区二区久久精品爱涩 | 国产精品久久久久久久久久久免费看 | 91在线精品视频 | 久草在线网址 | 国产精品美 | 欧美另类交在线观看 | 天天插视频 | 四虎国产精品永久在线国在线 | 国产精品免费在线播放 | 欧美精品黑人性xxxx | 五月婷婷综合在线 | 国产一区二区在线看 | 中文字幕精品一区二区精品 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 色综合久久综合中文综合网 | 国产a免费 | 久久久久久麻豆 | 日韩在线观看的 | 97色视频在线 | 最近免费观看的电影完整版 | 天堂在线v| 91黄视频在线观看 | 成年人国产在线观看 | 久久精品9 | 69亚洲乱 | 欧美日韩精品国产 | 婷婷视频导航 | 国产亚洲激情视频在线 | 麻豆视传媒官网免费观看 | 久久视频一区二区 | 中文在线免费视频 | 欧美日韩精品影院 | 天天插狠狠插 | 亚州成人av在线 | 在线免费黄 | 婷婷丁香av | 日韩在线三级 | 97精品免费视频 | 天天搞天天| 日韩伦理片一区二区三区 | 中文字幕色婷婷在线视频 | 亚洲国产精品久久久 | 国产精品久久久久久久婷婷 | 视频一区在线播放 | 麻豆视频一区二区 | 亚洲国产中文字幕在线观看 | 88av色| 国产又黄又硬又爽 | 日韩在线观看中文字幕 | 欧美99精品 | 91热这里只有精品 | 伊人久久国产 | 日本精品在线视频 | 日韩一区二区三区不卡 | 午夜久久影视 | 黄色av电影| 日韩a在线看 | 亚洲午夜剧场 | 免费中文字幕 | 色婷婷久久久综合中文字幕 | 五月开心婷婷网 | av解说在线观看 | 在线免费视频一区 | 久久久久国产精品厨房 | 狠狠干我| 99一区二区三区 | 色网站免费在线看 | 中文字幕丰满人伦在线 | 国产精品久久久久婷婷二区次 | 91免费版在线观看 | 狠狠狠干 | 国产字幕在线看 | 国产精品久久在线观看 | 国产精品一区二区免费视频 | 久久久久99999 | 黄色亚洲精品 | 国产精品无 | 五月婷婷精品 | 日韩精品一区二区三区免费观看 | 亚洲精品一区二区三区在线观看 | 国产玖玖视频 | 人人爽人人澡 | 亚洲国产剧情av | 久久一区二区三区日韩 | 中文字幕精品www乱入免费视频 | 欧美日韩一区二区视频在线观看 | 天天摸天天舔 | 久久人人精 | 亚洲视频在线免费看 | 黄色精品网站 | 黄网站免费看 | 一区二区三区免费在线观看视频 | 成人av片在线观看 | 91精品国产自产老师啪 | 88av网站| 日韩av男人的天堂 | 成年人免费观看国产 | 久久午夜国产精品 | 中文字幕在线观看一区二区 | 91最新国产 | 中文字幕 在线 一 二 | 亚洲成av人影院 | 91看片网址 | 五月婷婷中文字幕 | 成人av在线一区二区 | 欧美性极品xxxx娇小 | 日韩电影中文字幕在线观看 | 免费毛片一区二区三区久久久 | 欧美日韩在线播放 | 国产不卡在线观看 | 西西444www大胆高清图片 | 久久97超碰 | 一级一片免费观看 | 国产精品黑丝在线观看 | 国产一区成人在线 | 日韩精品在线看 | 激情大尺度视频 | 91精品国产一区二区在线观看 | 激情丁香婷婷 | 免费a级毛片在线看 | 久久精品三级 | 国产精品国产三级在线专区 | 五月婷婷视频在线 | 精品国产中文字幕 | 精品国产伦一区二区三区观看体验 | 成人影片在线免费观看 | 精品二区视频 | 中国美女一级看片 | 欧美精品乱码久久久久久 | 伊人天堂av | 欧美激情综合五月色丁香小说 | 成人免费一区二区三区在线观看 | 成人在线观看免费视频 | 四虎在线视频免费观看 | 国产一级二级在线观看 | 黄色av成人在线 | 欧美色综合 | 免费成人在线电影 | 在线观看视频你懂 | 午夜精品一区二区三区在线播放 | 91亚洲狠狠婷婷综合久久久 | 青草草在线 | 午夜精品剧场 | 国产一级免费在线 | 日韩有码在线观看视频 | 夜色成人网 | 日韩二区在线 | 日本一区二区三区免费看 | 日韩三级视频在线看 | 手机在线看片日韩 | 欧美成年网站 | 久久激情五月婷婷 | 国产黄色理论片 | 成人网色 | 亚洲精品午夜国产va久久成人 | 日韩免费电影网站 | 日韩在线视频一区二区三区 | 在线看岛国av| 久久精品免视看 | 波多野结衣电影一区二区三区 | 最近最新中文字幕视频 | 久久国产露脸精品国产 | 国产黄色大片 | 欧美老女人xx | 久久a免费视频 | 女人18毛片90分钟 | 午夜美女福利直播 | 成人av影视 | a v在线视频 | 欧美久久久久久久久久久 | 999在线精品 | 久久久久女人精品毛片 | 天天色天天搞 | 97精品国产91久久久久久久 | 在线国产激情视频 | 经典三级一区 | 日韩最新在线 | 亚洲作爱| 免费91麻豆精品国产自产在线观看 | 91福利在线观看 | 韩国av电影网 | 亚洲国产资源 | 91九色蝌蚪视频在线 | 日韩在线欧美在线 | www.夜夜骑.com | 日韩大片免费观看 | av免费黄色 | 天天色综合三 | 激情开心网站 | 人人爽影院 | 成人一级在线 | 久草视频视频在线播放 | 高清免费在线视频 | 中文字幕在线观看网 | 天天操天天操天天操天天操天天操 | 久草网视频在线观看 | 婷婷丁香在线 | 91麻豆网站 | 国内精品久久久久久久影视麻豆 | 亚洲国产免费看 | 免费黄色看片 | 一区二区三区四区免费视频 | 日韩电影一区二区三区 | 欧美有色 | 国产麻豆视频免费观看 | 午夜精品久久久久久久久久久久久久 | 日韩狠狠操 | 国产精品免费视频网站 | 99久久婷婷国产 | 国产一级在线视频 | 在线观看中文字幕dvd播放 | 国产精品9999 | 国产特级毛片aaaaaa高清 | 色综合久久中文综合久久牛 | 久久久国际精品 | 日韩免费视频 | 亚洲国产网站 | 午夜在线国产 | 天天操夜夜操国产精品 | 2021国产在线视频 | 69亚洲乱 | 黄色免费大片 | 国产涩涩在线观看 | 亚洲国产999 | 97免费视频在线 | 日本中文字幕高清 | v片在线看| 久久久久亚洲精品成人网小说 | 天天爽夜夜爽人人爽一区二区 | 五月天久久久久久 | 国产色在线 | 天天天天天天天操 | 久久私人影院 | www九九热| 日日干av| 成年人免费电影在线观看 | 国产黄免费 | 在线 视频 亚洲 | 久久久不卡影院 | 国产在线一线 | av片子在线观看 | 三级免费黄色 | 国产黄色精品 | 国产精品v欧美精品 | 亚洲激情在线播放 | 久久激情五月丁香伊人 | 激情欧美日韩一区二区 | 天天操天天摸天天射 | 色视频网站免费观看 | 久久噜噜少妇网站 | 亚洲成人精品久久 | 久久综合丁香 | 91大神电影| 久久免费国产电影 | 国产精品福利久久久 | 免费av大片 | 欧美大荫蒂xxx | 精品视频免费播放 | 欧美日韩一区二区视频在线观看 | 欧美俄罗斯性视频 | 天天操天天摸天天干 | 中文字幕免费一区 | 免费av片在线 | av大片免费 | 日韩视频免费观看高清完整版在线 | 久久五月精品 | 国产精品小视频网站 | 少妇bbw撒尿| 亚洲黄色精品 | 综合网色| 三级动态视频在线观看 | 国产精品高清在线观看 | 久久日韩精品 | 免费黄色av. | 欧美精品一区二区性色 | 成人午夜剧场在线观看 | 亚州视频在线 | 在线观看一级视频 | 国产精品美| 日韩欧美视频二区 | 亚州精品在线视频 | 中国一级片免费看 | 欧美日韩精品免费观看 | 久久久久久久久久毛片 | 亚洲在线精品 | 免费看精品久久片 | 最近中文字幕mv免费高清在线 | 国内精品久久久久久久97牛牛 | 亚洲精品xxxx| 黄色大全在线观看 | 婷婷色网视频在线播放 | 日韩综合第一页 | 国产精品久久久久久婷婷天堂 | 午夜91视频 | 在线观看久草 | 天天做天天爽 | 在线看国产一区 | 蜜臀久久99静品久久久久久 | 亚洲人久久 | a级黄色片视频 | 成人免费观看网址 | 久久福利精品 | 在线精品一区二区 | 欧美日韩性 | 久久这里只有精品视频首页 | 天天草天天干 | 乱子伦av| 国产精品毛片久久蜜 | 欧美精品免费视频 | 97视频资源 | 久久综合九色九九 | 日韩婷婷| 亚洲最大成人免费网站 | 久久免费国产精品 | 久久久免费av | 亚洲综合小说电影qvod | 一区二区三区精品久久久 | 91精品老司机久久一区啪 | 9在线观看免费 | 国产精品午夜av | 91亚洲狠狠婷婷综合久久久 | 91粉色视频| 天天插视频 | 成年人电影毛片 | 国产精品福利av | 97超碰在线播放 | 美女久久久久久久久久久 | 国产精品女主播一区二区三区 | 免费在线观看黄 | 日本天天操| 久久黄页 | 婷婷婷国产在线视频 | ,久久福利影视 | 中文字幕区 | 中文字幕在线观看网址 | 亚洲成a人片综合在线 | 国产资源免费在线观看 | 丁香网五月天 | 精品一区二区亚洲 | 亚洲成人av一区二区 | 黄色av电影在线 | 久久首页 | av在线播放不卡 | 天天爽人人爽夜夜爽 | 91亚洲精| 久久国产一二区 | 中文字幕电影网 | 成人永久在线 | 午夜视频在线观看一区二区 | 欧美伊人网 | 97超碰免费在线观看 | 国产爽妇网 | 免费看一及片 | 精品美女久久 | 久久久伦理 | 欧美在线观看视频 | 日韩一级电影在线观看 | 国产黄色精品在线观看 | 黄污视频大全 | 亚洲精品综合久久 | www激情com| 亚洲午夜精品电影 | 色婷婷欧美 | 欧美日韩国语 | 国产97碰免费视频 | 中文字幕在线播放第一页 | 久久天天躁狠狠躁夜夜不卡公司 | 天天色天天爱天天射综合 | 五月婷婷狠狠 | www免费在线观看 | 欧美一区二区三区免费观看 | 99热在线免费观看 | 国产精品丝袜久久久久久久不卡 | 精品一区 精品二区 | 一级免费黄视频 | 国产xxxx做受性欧美88 | 欧美污网站 | 手机成人av |