更新 D3 圆形包布局

2024-02-09

我正在尝试使用我收到的 json 数据动态更新 d3 圆形包布局。每秒我都会调用 d3.json() 来获取新的 json。我的实现只是在旧可视化下创建一个新可视化,而不是更新现有可视化。我想动态更新现有布局......

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="d3.v2.js"> 
</script>

<script type="text/javascript" src="jquery-1.4.min.js"></script>

<link rel="stylesheet" href="style.css" type="text/css">
<link rel="stylesheet" href="syntax.css" type="text/css">
<link rel="stylesheet" href="pack.css" type="text/css">

</head>

<body>

<div id="chart"> </div>
<script type="text/javascript">

    var width = 960,
        height = 960,
        format = d3.format(",d");

    var pack = d3.layout.pack()
        .size([width - 4, height -4])
        .value(function(d) { return d.size; });

    var vis = null;
    var node = null;

    vis = d3.select("#chart").append("svg")
    .attr("width", width)
    .attr("height", height)
    .attr("class", "pack");
/*      vis.append("g")
    .attr("transform", "translate(2, 2)"); */

    function update(json){


        // Creating the circle packed core
        var gNodes = vis.data([json]).selectAll("g.node")
          .data(pack.nodes);

               //remove old data
        gNodes.exit().remove();


    }


setInterval(function(){
    d3.json("http://10.0.1.4:8080/cluster", function(json) {        
        update(json);
//update the visualization

        vis
          .selectAll("circle")
          .data([json]).selectAll("g.node")
          .data(pack.nodes)
          .attr("class", function(d) { return d.children ? "node" : "leaf node"; })
          .attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; })
          .transition()
          .duration(500)
          .attr("r", function(d) { return d.children ? coreSize : d.r; });

        var node = gNodes
          .enter().append("g")
          .attr("class", function(d) { return d.children ? "node" : "leaf node"; })
          .attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; });
        node.append("title")
        .text(function(d) { return (d==null? "": d.name + (d.children ? "" : ": " + format(d.size))); });

        node.append("circle")
        .attr("r", function(d) { return (d==null? 0: d.r); });

        node.filter(function(d) { return (d==null? "" : !d.children); }).append("text")
        .attr("text-anchor", "middle")
        .attr("dy", ".3em")
        .text(function(d) { return (d==null?"":d.name.substring(0, d.r / 3)); });

    });
    }, 1000);

    </script>

看看我的例子here http://jsfiddle.net/VividD/WDCpq/8/.

基本上,有初始加载的代码,其中所有圆圈、工具提示等都被创建并放置在初始位置。同时,布局(包)也已创建。

然后,每次按下按钮时,新数据都会加载到包中,并重新计算包。关键代码在这里:

if (dataSource == 0)
    pack.value(function(d) { return d.size; });
if (dataSource == 1)
    pack.value(function(d) { return 100; });
if (dataSource == 2)
    pack.value(function(d) { return 1 +
             Math.floor(Math.random()*501); });

var data1 = pack.nodes(data);

(我有三个按钮,这就是为什么有 3 个 if)

之后,元素将转换到新位置,并且其属性将根据您的确定进行更改。

以下是一些正在进行转换的图片:

Start:

过渡:

End:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更新 D3 圆形包布局 的相关文章

  • AJAX 安全问题

    我希望能够解决一些关于 AJAX 安全性的问题 这是我试图理解的一个场景 假设我正在使用 AJAX 向页面请求一些半敏感材料 例如 我将把用户的 ID 传递给一个 php 文件 并返回一些关于他们自己的信息 现在 是什么阻止人们模拟此 Ja
  • 检测单选按钮/复选框状态的变化

    我需要可靠地检测页面上单选按钮 复选框的状态变化 以便查看表单是否被修改 现在 这是一个完全独立的脚本 我无法修改任何控制表单的内容 目前 我只能看到两种方法 onchange事件处理程序 有助于处理文本框 文本区域和选择 但不会针对复选框
  • 为什么省略分号会破坏这段代码?

    或者换句话说 为什么分号插入失败 导致下面的代码被破坏 function Foo Foo prototype bar function console log bar lt missing semicolon function Foo pr
  • 使用 Ajax Jquery post 请求进行 Json 劫持

    昨天 我读了一些关于如何预防的好文章使用 Asp Net MVC 进行 Json 劫持 http haacked com archive 2009 06 24 json hijacking aspx 规则是 永远不要通过 get 请求发送
  • 在节点环境中存根 jQuery.ajax (jQuery 2.x)

    我正在尝试运行一些需要存根的测试jQuery ajax 我正在使用 SinonJS 来做到这一点 它曾经与旧版本的 jQuery 1 x 一起工作得很好 var require jquery var sinon require sinon
  • Javascript 进程是否有多个执行线程?

    背景 我正在创建一个 地址簿 类型的应用程序 有很多条目需要加载 一个想法是首先加载一小部分条目 让用户开始 然后将剩余条目排队 优先考虑用户单击的条目 例如 如果他们单击以 X 开头的名称 请先加载这些名称 然后再处理队列的其余部分 这个
  • 如何在React Native的MapView中设置标记

    我想在React Native中的MapView上设置一个标记 但是通过官方文档找不到任何信息MapView https facebook github io react native docs mapview html content 如
  • 将时间戳转换为一个数组

    在应用程序脚本 谷歌表中运行 我从 API 获取时间戳并返回此结果 1 6370611672429312E18 1 63706107263277082E18 我执行此代码并且工作正常 但问题不在数组中 我每次都需要它在数组中 const t
  • 正则表达式中连字符的这种用法有效吗?

    NB I only想知道它是否是正则表达式定义中未转义连字符的有效应用 它是not关于匹配电子邮件 连字符或反斜杠的含义 量词或其他任何内容的问题 另外 请注意 链接的答案并没有真正讨论转义 未转义连字符之间的有效性问题 通常我会像这样声明
  • .points 不透明度/大小在三个.js 内

    我回来回答有关 points 的第二个问题 这次想知道如何将不透明度从 0 更改为 1 然后又回到距发射器的特定像素距离内 var particleCount 14 particles new THREE Geometry pMateria
  • 通过 JavaScript 单击按钮/页面提交

    我想了解 asp net 框架如何知道何时单击了按钮 因此一旦收到请求 就会在服务器上触发其单击事件 我需要了解它是如何工作的 因为我想从 JavaScript 触发按钮的服务器单击事件 我能够从 JavaScript 执行页面提交 doc
  • 可以禁用幻灯片的触摸模拟但不能禁用滚动条(危险的滑动器)吗?

    我的页面上有一个危险的滑动器 它成功地模拟了幻灯片和随附滚动条上的触摸事件 允许单击鼠标并移动以向左或向右滑动幻灯片 这很好 但我现在在滑动器内的幻灯片上调用了可拖动 这意味着我需要停止此触摸模拟 拖动幻灯片并同时移动它们会引起混乱 但仅限
  • Angular2:动态同步http请求

    Goal 发出一系列同步 http 请求并能够将它们作为一个可观察流进行订阅 示例 不工作 let query arr test1 test2 test3 function make request query arr if query a
  • 播放没有音频标签的音频

    是否可以在没有音频标签的情况下仅使用 javascript 播放音频 我通过 tinyMce 编辑器注入脚本 因为我无权访问网站的后端 并且它不支持客户端的音频标签 她只想要当您将鼠标悬停在图像上时发出简单的声音 我已经完成了所有设置 但是
  • 如何从 html 页面 [javascript] 调用 Web 服务方法而不刷新页面

    我有一个webservice这将返回一个值 我的要求是 我需要调用它webservice从一个index html页面 该页面有一个 html 提交按钮 在该按钮上单击我正在呼叫JavaScript 从那里我想调用网络方法 我怎样才能做到这
  • 从网页运行 ClickOnce 应用程序,无需用户操作

    我们有一个基于 Java 的 Web 应用程序以及用 C 编写的相同应用程序 如果 java 检查器发现客户端计算机上没有安装 Java 则应该运行该应用程序 这个想法是运行 C 单击一次 http en wikipedia org wik
  • 如何解决“消息端口在收到响应之前已关闭”的问题。在 JavaScript 中的 window.location.reload() 之后

    我遇到了 javascript 问题 从 chrome v73 0 3683 86 开始 每当我在 window location reload 函数之后运行 javascript 代码时 它总是给我错误 Unchecked runtime
  • 如何在 TypeScript 中使用 navigation.replace ?

    我试图在我的代码中使用它 const navigation useNavigation navigation replace AllFriends 但我不断收到错误消息 Property replace does not exist on
  • 为什么 JavaScript 中是 [1,2] + [3,4] = "1,23,4" ?

    我想将一个数组的元素添加到另一个数组中 所以我尝试了以下方法 1 2 3 4 它的回应是 1 23 4 到底是怎么回事 The 操作员没有为数组定义 发生的事情是 JavaScript将数组转换为字符串并将它们连接起来 Update 由于这
  • JavaScript 阶乘防止无穷大

    我一直在 JavaScript 中使用这个函数来计算阶乘数 var f function factorial n if n 0 n 1 return 1 if f n gt 0 return f n return f n factorial

随机推荐

  • 在 Java 中连接来自 HBase 的两个结果集?

    是否可以连接从 java 中的 hbase 检索的两个或多个结果集 不 不可能加入 JDBC 结果集 但是 您可以获取它们的结果并手动组合它们 如果它们兼容 如果它们属于同一实体 EDIT 如果您只需要组合两个相同类型的列表 您可以这样做
  • Stargazer 回归输出中具有交互作用的排序变量

    我有以下回归 fit1 lt lm y x1 data data fit2 lt lm y x1 x2 data data fit3 lt lm y x3 x1 data data 我希望输出中的解释变量按顺序排列 x1 x2 x3 最后是
  • 将 Numpy 数组复制到内存视图

    我有一个memoryview on a numpy数组并想复制另一个数组的内容numpy使用此数组将其放入其中memoryview import numpy as np cimport numpy as np cdef double 1 t
  • 将字符串解析为公式的库,适用于 Windows Phone 7

    是否有任何 NET 库可以将字符串解析为公式 IE 如果用户输入 2 5 2 图书馆就能计算出结果吗 编辑 最好是能够与 Windows Phone 7 一起使用而无需太多摆弄的东西会很好 NCalc http ncalc codeplex
  • 是什么原因导致“x.asm:(.text+0xd): 对‘y’的未定义引用”?

    我已经很长一段时间没有使用 C 和汇编语言进行编程了 大约 2 年 现在我决定重新开始 但我想做一些更复杂的事情 我考虑过创建一个简单的内核 现在我在网上找到了这个源代码 启动 asm global loader extern kernel
  • 如何向Vuejs传递url参数

    我正在使用 laravel 和 VueJs 构建一个应用程序 我想知道如何以正确的方式将 url 参数 例如用户 slug 或用户 id 传递给 vuejs 以便能够使用该参数发出 ajax 请求 例如 当有人点击链接时 domain co
  • 使用 eclipse 防止向 SVN 提交带有警告的文件

    我有一个大型 Java 项目 有数千个编译警告 我想找到一种方法来防止开发人员提交带有警告的文件 这样所有警告就会逐渐消失 如果我提交一个带有编译错误的文件 Eclipse 会显示一条错误消息 但我找不到任何方法来对警告执行相同的操作 我发
  • Knockout isDirty 示例,使用映射插件中的动态视图模块

    我在用着瑞安 尼迈耶的肮脏旗帜 http www knockmeout net 2011 05 creating smart dirty flag in knockoutjs html 他的方法的一个例子可以在这里看到jsFiddle ht
  • 序列化/反序列化 ClassCastException:x 无法转换为 java.io.ObjectStreamClass

    使用 Java 本机序列化 我间歇性地看到 ClassCastException java lang ClassCastException myCompany MyClass MembershipServiceMethod cannot b
  • 带有 Webflux 的 JDBC - 如何分派到容器线程

    我正在使用 webflux 进行小型概念验证 在我的应用程序的一部分中 我想与一个数据库进行通信 通过 JDBC 该数据库是阻塞的并且不太适合反应器 尽管如此 对于这个概念验证 我正在考虑以下技巧 定义一个专用的线程池 我们称之为DBThr
  • 在 unix 中将文本附加到文件的最后一行

    我想在文本文件最后一行的末尾附加一个冒号字符 而不是在新行中 我的文件末尾已经有一个 n 字符 所以printf gt gt file将冒号换成新行 Using sed s file gt newfile可以 但我的文件大约有 100 MB
  • 如何使用 nbconvert 从 Jupyter Notebook 转换为 HTML

    我正在尝试获取一个使用 nbconvert 的实际示例 我看过很多博客 但我的想法是正确的 如何选择 Jupyter Notebook 所在的文件夹以及 HTML 输出的目标文件夹 使用 Windows 执行此操作的正确语法是什么 谢谢你
  • 以编程方式创建 Word 2010 文档

    每周我都会制作一份 Word 文档 其中包含来自我们网络上各种来源的一些副本 表格和图表 这可能需要一些时间 有时我会犯错误或忘记应该输入的内容 我想尽可能地自动化这个过程 所以基本上我想制作一个Word模板或控制台应用程序 当我打开 运行
  • 当不带任何参数调用脚本时,使用 Python argparse 显示帮助消息

    假设我有一个程序使用argparse处理命令行参数 选项 以下将打印 帮助 消息 myprogram h or myprogram help 但是 如果我在没有任何参数的情况下运行脚本 它不会执行任何操作 我想要它做的是在不带参数调用它时显
  • 如何在 Laravel 4 中为 Route::group 设置正则表达式参数约束?

    对于简单的路线我知道我可以使用where陈述 但是 Route group 前缀中的参数呢
  • Docker 中的 Kibana 和 Elasticsearch 通过标准安装共存

    我正在尝试在我的服务器上设置新版本的 Kibana 和 Elasticsearch 我有一个现有的 K 和 E 使用默认端口 5601 9200 运行 并且无法升级现有数据 我想在 Docker 中运行 K 和 E 的较新版本 7 4 2
  • Flash Builder 4.6 在 Google Chrome 中运行时始终显示空白 html 页面

    Flash Builder 4 6 在 Google Chrome 中运行时始终显示空白 html 页面 我已经尝试了一切 但没有任何作用 请帮忙 简单答案 不要使用 Chrome 来调试 Flash Builder 项目 对于调试 请执行
  • React 类对象方法声明之间的区别?

    我已经看到了在类组件中声明方法的两种方法React Method 1 class someComp extends React Component handleResetShapes e gt e preventDefault this s
  • 布局中的 Zend_Dojo_Form

    我有一个 Zend Dojo Form 我已将其从我的视图 工作正常 移至我的布局 因为它在每个页面上都有用 然而 在布局中 表单不再起作用 没有任何 dijit 元素出现 它的行为就像普通的 HTML 表单一样 这是我的引导程序的相关部分
  • 更新 D3 圆形包布局

    我正在尝试使用我收到的 json 数据动态更新 d3 圆形包布局 每秒我都会调用 d3 json 来获取新的 json 我的实现只是在旧可视化下创建一个新可视化 而不是更新现有可视化 我想动态更新现有布局