Javascript d3.js是否支持动态日光浴

Javascript d3.js是否支持动态日光浴,javascript,d3.js,sunburst-diagram,Javascript,D3.js,Sunburst Diagram,我想创建一个从 及 我希望使用d3.js或至少是一个纯javascript解决方案,但该解决方案将响应鼠标单击以显示有关所选部分的更多信息 放大和缩小不是强制性的,但如果我能做到,那就好了 现在我的问题是,是否有一个框架可以支持这一点,或者我必须自己把它们混合起来 免责声明:谷歌没有那么大帮助 单独使用D3很容易:如果单击任何元素,该元素将聚焦并转换为90度,并在其上设置选定的类 此外,右上角的图例文字将更改为选定图元的名称。实现这种耦合的代码部分是: d3.选择全部(“路径”)。在(“单击”)

我想创建一个从

我希望使用d3.js或至少是一个纯javascript解决方案,但该解决方案将响应鼠标单击以显示有关所选部分的更多信息

放大和缩小不是强制性的,但如果我能做到,那就好了

现在我的问题是,是否有一个框架可以支持这一点,或者我必须自己把它们混合起来


免责声明:谷歌没有那么大帮助

单独使用D3很容易:如果单击任何元素,该元素将聚焦并转换为90度,并在其上设置
选定的

此外,右上角的图例文字将更改为选定图元的名称。实现这种耦合的代码部分是:

d3.选择全部(“路径”)。在(“单击”)上,函数(d,i){
var newAngle=-(d.x+d.dx/2);
innerG
.transition()
.持续时间(1500)
.attr(“变换”、“旋转”(+(180/Math.PI*newAngle)+”);
//在所选元素上设置类“selected”。
路径
.classed(“selected”,函数(x){返回d.name==x.name;});
//使用正确的上下文更新文本框
//这可能是任意复杂的,以显示有关
//对象。
textBox.data([“单击:”+d.name])
.文本(字符串);
});

更新

对于可缩放的行为,例如单击的元素过渡到中心,可以使用与或几乎相同的代码。我对代码做了一些小改动,以显示如何提取有关单击哪个项目的信息:

所需的代码更改比以前更简单:

d3.选择全部(“路径”)。单击(“单击”),函数(d,i){
//缩放
path.transition()
.持续时间(750)
.attrTween(“d”,arcTween(d));
//使用正确的上下文更新文本框
//这可能是任意复杂的,以显示有关
//对象。
textBox.data([“单击:”+d.name])
.文本(字符串);
});

单独使用D3很容易:如果单击任何元素,该元素将聚焦并转换为90度,并在其上设置
所选的
类别

此外,右上角的图例文字将更改为选定图元的名称。实现这种耦合的代码部分是:

d3.选择全部(“路径”)。在(“单击”)上,函数(d,i){
var newAngle=-(d.x+d.dx/2);
innerG
.transition()
.持续时间(1500)
.attr(“变换”、“旋转”(+(180/Math.PI*newAngle)+”);
//在所选元素上设置类“selected”。
路径
.classed(“selected”,函数(x){返回d.name==x.name;});
//使用正确的上下文更新文本框
//这可能是任意复杂的,以显示有关
//对象。
textBox.data([“单击:”+d.name])
.文本(字符串);
});

更新

对于可缩放的行为,例如单击的元素过渡到中心,可以使用与或几乎相同的代码。我对代码做了一些小改动,以显示如何提取有关单击哪个项目的信息:

所需的代码更改比以前更简单:

d3.选择全部(“路径”)。单击(“单击”),函数(d,i){
//缩放
path.transition()
.持续时间(750)
.attrTween(“d”,arcTween(d));
//使用正确的上下文更新文本框
//这可能是任意复杂的,以显示有关
//对象。
textBox.data([“单击:”+d.name])
.文本(字符串);
});

这将在D3内实现。D3 sunburst中的每个元素都是一个SVG路径,可以像任何其他DOM元素一样分配单击事件。稍后的jQuery版本(我想是1.6+版本)可以像SVG元素是一个div一样进行操作。我相信使用D3本身有一种更简单的方法——检查文档。另一个例子看起来是(或者可能是在画布上绘制的SVG?),所以我点击了D3文档,构建了一个可以切换来自每个SVG路径的数据div的东西,而不是尝试合并这两个。精确缩放是什么意思?只需放大以查看较小的元素或分层缩放,如:?@musicaly\u ut zooming是放大和缩小以查看元素细节,如图所示:在D3中是可能的。D3 sunburst中的每个元素都是一个SVG路径,可以像任何其他DOM元素一样分配单击事件。稍后的jQuery版本(我想是1.6+版本)可以像SVG元素是一个div一样进行操作。我相信使用D3本身有一种更简单的方法——检查文档。另一个例子看起来是(或者可能是在画布上绘制的SVG?),所以我点击了D3文档,构建了一个可以切换来自每个SVG路径的数据div的东西,而不是尝试合并这两个。精确缩放是什么意思?只是放大以查看较小的元素或分层缩放,如:?@musicaly\u ut zooming是放大和缩小以查看元素的详细信息,如图所示:我认为这很容易,但没那么容易!我猜是脚踏实地,加上我是d3.js的新手,并不是说我在找借口;(谢谢。我原以为很容易,但没想到那么容易!我想是冷脚,加上我是d3.js的新手,并不是说我在找借口;(谢谢)。