2017-10-14 250 views
0

我正在使用Vis.js創建字圖的網頁上工作。但事實是,與默認縮放級別,這是很難看到的話: enter image description here 但如果我增加縮放級別,那麼事情很好地工作: enter image description here 所以,我真的想增加默認縮放級別,所以用戶不必放大文字圖形。請幫助我,非常感謝你: 以下是代碼:(我還貼出了在線演示:http://word-graph-example.co.nf/index.htmlVis.js增加字圖(網絡模塊)的默認縮放級別

<html> 
    <head> 
     <meta charset="UTF-8">  
     <meta name="viewport" content="width=device-width, initial-scale=1"> 
     <title>DEMO</title>   
     <script src="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.js"></script> 
     <script src="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.css"></script>  
    </head> 
    <body>   
     <div id = "word_graph" style = "height: 500px;" class = "display" width = "100%"></div>   
     <script> 
// Word graph (hacked from http://132.234.113.15:3000/getWordsGraph) 
var network; 
var allNodes; 
var allEdges; 
var highlightActive = false; 
var nodesDataset; 
var edgesDataset; 
function redrawAll() { 
    var container = document.getElementById('word_graph'); 
    var options = {  
     height: '100%', 
     nodes: { 
      shape: 'circle', 
      scaling: { 
       min: 10, 
       max: 30, 
       label: { 
        min: 8, 
        max: 30, 
        drawThreshold: 2, 
        maxVisible: 200 
       } 
      }, 
      font: { 
       size: 12, 
       face: 'Tahoma' 
      } 
     }, 
     edges: { 
      width: 1, 
      color: { 
       inherit: 'source' 
      }, 
      smooth: { 
       type: 'continuous' 
      } 
     }, 
     interaction: { 
      tooltipDelay: 200, 
      hideEdgesOnDrag: false 
     }, 
     layout: {   
      improvedLayout: false 
     }, 
     physics: { 
      //enabled: false, 
      stabilization: { 
       iterations: 500 
      }, 
      barnesHut: { 
       gravitationalConstant: -25000, 
       centralGravity: 0.05, 
       //centralGravity: 0, 
       avoidOverlap: 1    
      }, 
      solver: 'barnesHut', 
      minVelocity: 0.75 
     }, 
     start: { 
      zoomMin: 3 
     } 
    }; 
     var jsonData = ....... // http://word-graph-example.co.nf/index.html for more information about the data, you can get it from that page :(
     nodesDataset = new vis.DataSet(jsonData.nodes);  
     edgesDataset = new vis.DataSet(jsonData.edges); 

     var data = {nodes:nodesDataset, edges:edgesDataset}; 

     network = new vis.Network(container, data, options); 
     // get a JSON object 
     // get a JSON object 
     allNodes = nodesDataset.get({returnType:"Object"}); 
     allEdges = edgesDataset.get({returnType:"Object"}); 
    //network.focusOnNode(1,{scale: 2});  
     network.on("click", neighbourhoodHighlight); 
} 

function neighbourhoodHighlight(params) { 
    // if something is selected: 
    if (params.nodes.length > 0) { 
     highlightActive = true; 
     var i,j; 
     var selectedNode = params.nodes[0]; 

     // mark all nodes as hard to read. 
     for (var nodeId in allNodes) { 
      allNodes[nodeId].color = 'rgba(200,200,200,0.5)'; 
      if (allNodes[nodeId].hiddenLabel === undefined) { 
       allNodes[nodeId].hiddenLabel = allNodes[nodeId].label; 
       allNodes[nodeId].label = undefined; 
      } 
     } 
     for(var edgeId in allEdges){ 
      if(allEdges[edgeId].hiddenLabel === undefined){ 
       allEdges[edgeId].hiddenLabel = allEdges[edgeId].label; 
       allEdges[edgeId].label = undefined; 
      } 
     } 
     var connectedNodes = network.getConnectedNodes(selectedNode); 
     var connectedEdges = network.getConnectedEdges(selectedNode); 
     // all first degree nodes get a different color and their label back 
     for (i = 0; i < connectedNodes.length; i++) { 
      allNodes[connectedNodes[i]].color = 'rgba(51, 204, 51,0.75)'; 
      if (allNodes[connectedNodes[i]].hiddenLabel !== undefined) { 
       allNodes[connectedNodes[i]].label = allNodes[connectedNodes[i]].hiddenLabel; 
       allNodes[connectedNodes[i]].hiddenLabel = undefined; 
      } 
     } 
     // all first degree edges 
     for (i = 0; i < connectedEdges.length; i++) { 
      if (allEdges[connectedEdges[i]].hiddenLabel !== undefined) { 
       allEdges[connectedEdges[i]].label = allEdges[connectedEdges[i]].hiddenLabel; 
       allEdges[connectedEdges[i]].hiddenLabel = undefined; 
      } 
     } 
     // set the color for the main(clicked) node 
     allNodes[selectedNode].color = 'rgba(255, 51, 0, 0.75)'; 
     if (allNodes[selectedNode].hiddenLabel !== undefined) { 
      allNodes[selectedNode].label = allNodes[selectedNode].hiddenLabel; 
      allNodes[selectedNode].hiddenLabel = undefined; 
     } 
    } 
    else if (highlightActive === true) { 
     // reset all nodes 
     for (var nodeId in allNodes) { 
      allNodes[nodeId].color = undefined; 
      if (allNodes[nodeId].hiddenLabel !== undefined) { 
       allNodes[nodeId].label = allNodes[nodeId].hiddenLabel; 
       allNodes[nodeId].hiddenLabel = undefined; 
      } 
     } 
     for (var edgeId in allEdges) { 
      allEdges[edgeId].color = undefined; 
      if (allEdges[edgeId].hiddenLabel !== undefined) { 
       allEdges[edgeId].label = allEdges[edgeId].hiddenLabel; 
       allEdges[edgeId].hiddenLabel = undefined; 
      } 
     } 
     highlightActive = false 
    } 

    // transform the object into an array 
    var nodeUpdateArray = []; 
    for (nodeId in allNodes) { 
     if (allNodes.hasOwnProperty(nodeId)) { 
      nodeUpdateArray.push(allNodes[nodeId]); 
     } 
    } 
    nodesDataset.update(nodeUpdateArray); 
    var edgeUpdateArray = []; 
    for (edgeId in allEdges) { 
     if (allEdges.hasOwnProperty(edgeId)) { 
      edgeUpdateArray.push(allEdges[edgeId]); 
     } 
    } 
    edgesDataset.update(edgeUpdateArray); 
} 

redrawAll(); 

var selectedNode = network.selectNodes(['580']); // GreatBarrierReef  
console.log(selectedNode); 
     </script> 
    </body> 
</html> 

的代碼與選項擺弄:

var options = {  
      height: '100%', 
      nodes: { 
       shape: 'circle', 
       scaling: { 
        min: 10, 
        max: 30, 
        label: { 
         min: 8, 
         max: 30, 
         drawThreshold: 2, 
         maxVisible: 200 
        } 
       }, 
       font: { 
        size: 12, 
        face: 'Tahoma' 
       } 
      }, 
      edges: { 
       width: 1, 
       color: { 
        inherit: 'source' 
       }, 
       smooth: { 
        type: 'continuous' 
       } 
      }, 
      interaction: { 
       tooltipDelay: 200, 
       hideEdgesOnDrag: false 
      }, 
      layout: {   
       improvedLayout: false 
      }, 
      physics: { 
       //enabled: false, 
       stabilization: { 
        iterations: 500 
       }, 
       barnesHut: { 
        gravitationalConstant: -25000, 
        centralGravity: 0.05, 
        //centralGravity: 0, 
        avoidOverlap: 1    
       }, 
       solver: 'barnesHut', 
       minVelocity: 0.75 
      }, 
      start: { 
       zoomMin: 3 
      } 

請幫幫我,非常感謝你:)

回答

0

我覺得你可以嘗試這樣的:

network.moveTo({scale: 0.5})