ネットワーク レイアウトを使用してグラフの視覚的表現を構築するために、Visjs.org ライブラリを試しています。すべてのノードが同じサイズのノード (ノードに円を使用しています) 内にラベルを持つグラフを作成したいと思います。
グラフを表示でき、ラベルは実際にノード内にあります。ただし、ノードは常にラベル テキストのサイズに合わせてスケーリングされます。したがって、ラベルが長い = ノードが大きくなります。
これは、ユーザーにとっては、より大きなノードに対する意図しない重要性を暗示しているように見えるので、私が望んでいることではありません。スケーリングオプションで遊んでみましたが、役に立ちませんでした。ノードの外側にラベルを配置することで問題を解決できましたが、それは私が望んでいることではありません。
私がやりたいことは、すべてのノードを強制的に同じサイズにし、ラベルをノード内に保持することです。サンプルプログラムを添付しています。
<html>
<head>
<script type="text/javascript" src="http://visjs.org/dist/vis.js"></script>
<link href="http://visjs.org/dist/vis.css" rel="stylesheet" type="text/css" />
<style type="text/css">
#mynetwork {
width: 600px;
height: 400px;
border: 1px solid lightgray;
}
</style>
</head>
<body>
<div id="mynetwork"></div>
<script type="text/javascript">
// create an array with nodes
var nodes = new vis.DataSet([
{id: 1, label: 'Fred'},
{id: 2, label: 'Bill'},
{id: 3, label: 'Texas'},
{id: 4, label: 'North\nCarolina'},
{id: 5, label: 'Planes'},
{id: 6, label: 'Books'}
]);
// create an array with edges
var edges = new vis.DataSet([
{from: 1, to: 2, label: 'knows'},
{from: 1, to: 3, label: 'lives-in'},
{from: 1, to: 5, label: 'likes'},
{from: 2, to: 4, label: 'lives-in'},
{from: 2, to: 5, label: 'flies'},
{from: 1, to: 6, label: 'likes'}
]);
// create a network
var container = document.getElementById('mynetwork');
// provide the data in the vis format
var data = {
nodes: nodes,
edges: edges
};
var options = { nodes: {shape: 'circle', scaling:{max: 200, min: 100}}};
// initialize your network!
var network = new vis.Network(container, data, options);
</script>
</body>
</html>