AngularJS中的Zoomable网络图

And*_*eas 23 javascript graph d3.js angularjs sigma.js

我想在AngularJS应用程序中可视化网络图.节点和边缘存储为JSON对象,稍后将添加和修改节点(例如每30秒一次).我想使用Angular数据绑定在JSON对象更改时自动更新图形.该图将具有10-1000个节点.节点将是矩形文本节点,每个节点包含一个句子.我希望图表可以缩放和平移.

到目前为止我知道以下选项:

还有其他相关的图书馆吗?什么是用于此项目的最佳库,以及如何在库中实现这样的可缩放动态网络图?

efe*_*der 18

我一直在以角度方式试验VisJs,到目前为止我真的很喜欢它.他们的网络既可以平移也可以缩放,您可以选择节点.文档很容易理解,他们的网站上有很多例子.由于vis的网络可以动态更新,我发现很容易将它集成到我的角度应用程序中.例如,我创建了这个指令:

app.directive('visNetwork', function() {
    return {
        restrict: 'E',
        require: '^ngModel',
        scope: {
            ngModel: '=',
            onSelect: '&',
            options: '='
        },
        link: function($scope, $element, $attrs, ngModel) {
            var network = new vis.Network($element[0], $scope.ngModel, $scope.options || {});

            var onSelect = $scope.onSelect() || function(prop) {};
            network.on('select', function(properties) {
                onSelect(properties);
            });

        }

    }
});
Run Code Online (Sandbox Code Playgroud)

我在我的html中使用的是这样的:

<vis-network ng-model="network_data" options="network_options" on-select="onNodeSelect" id="previewNetwork">
</vis-network>
Run Code Online (Sandbox Code Playgroud)

然后在我的控制器中我有以下内容:

    $scope.nodes = new vis.DataSet();
    $scope.edges = new vis.DataSet();
    $scope.network_data = {
        nodes: $scope.nodes,
        edges: $scope.edges
    };
    $scope.network_options = {
        hierarchicalLayout: {
            direction: "UD"
        }

    };

   $scope.onNodeSelect = function(properties) {
        var selected = $scope.task_nodes.get(properties.nodes[0]);
        console.log(selected);
    };

    $scope.nodes.add([
        {id: 1, label: 'Node 1'},
        {id: 2, label: 'Node 2'},
        {id: 3, label: 'Node 3'},
        {id: 4, label: 'Node 4'},
        {id: 5, label: 'Node 5'}]);

    $scope.edges.add([
        {id: 1, from: 1, to: 2},
        {id: 2, from: 3, to: 2}
    ]);
Run Code Online (Sandbox Code Playgroud)


Sim*_*ris 12

这应该是软件推荐 StackExchange,但由于赏金,我不能投票结束.

GoJS支持您的所有要求,并与Angular一起工作(此处为简单演示).(内置模型存储,数据绑定,缩放和平移的JSON)

  • Upvote for the softwarerecs referral. (3认同)

And*_*rew 3

在 D3 中有一个很好的带有源代码的网络地图演示/示例: http: //christophergandrud.github.io/d3Network/ 功能都在那里,而且 D3 似乎与 JSON 配合得很好。根据我的研究,这是可视化库的一个不错的选择。许多其他库(石墨等)也支持相同的功能,但更难实现并且不是非常活跃。

NVD3 是 D3 的变体,专为 AngularJS 设计,也可以工作。在 AngularJS 中,从 NVD3 中实现图形和图表比 D3 更容易。

  • 我对使用 D3 犹豫不决的原因之一是我还没有看到任何使用带有较长标签的矩形节点(需要换行)的示例。我见过的几乎所有示例都倾向于使用圆形节点,并且过去人们似乎在创建具有好看的矩形节点的图形时遇到了麻烦(请参阅[此处](https://groups.google.com/forum/#!主题/d3-js/Q5H8CuLpm1k))。 (2认同)