javascript - AngularJS 中的可缩放网络图

标签 javascript angularjs graph d3.js sigma.js

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

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

还有其他相关的库吗?该项目使用的最佳库是什么,以及如何在给定库的情况下实现这样的可缩放动态网络图?

最佳答案

我一直在 VisJs 进行实验有 Angular ,到目前为止我真的很喜欢它。他们的网络既可以平移又可以缩放,并且您可以选择节点。该文档很容易理解,并且他们的网站上有很多示例。 由于 vis 的网络可以动态更新,我发现很容易将其集成到我的 Angular 应用程序中。例如,我创建了这个指令:

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);
            });

        }

    }
});

我在我的 html 中使用它,如下所示:

<vis-network ng-model="network_data" options="network_options" on-select="onNodeSelect" id="previewNetwork">
</vis-network>

然后在我的 Controller 中我有以下内容:

    $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}
    ]);

关于javascript - AngularJS 中的可缩放网络图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24396708/

相关文章:

javascript - 我正在尝试在 parse.com 中编写一个触发器,但出现了一些错误

javascript - 我的 promise 在我认为应该实现之前就已经实现了

javascript - 根据大小值为每个旭日形弧线着色

angularjs - AngularJS 中 Protractor 测试的代码覆盖率

javascript - 在不加载完整文件的情况下跳到 HTML5 音频元素中的特定时间

angularjs - 动态设置 ui-sref Angularjs 的值

javascript - Ionic/Angular JS - 使用地理位置后输入字段未正确更新

android-我需要设计 180 度图(半饼图)

javascript - 在节点之间绘制连接而不重叠节点的算法

java - 为我指明 NLP 数据结构和搜索算法的正确方向