d3.js - .exit().remove() 组元素不起作用

2024-06-18

我正在构建一个动态条形图,查看肯尼亚和坦桑尼亚男孩和女孩的考试成绩。用户可以从下拉菜单中选择他们想要查看哪个国家(肯尼亚、坦桑尼亚)和哪一年(2010 年、2011 年)的分数。我已清理所有数据并将其组织到单独的国家/地区年份 .csv 文件中。这些条形图分组为g显示特定区域男孩和女孩分数重叠的元素。

一切都运转良好,except条形图不断生成自己超过前一个条形图。如果用户首先选择肯尼亚 2010 年,然后选择肯尼亚 2011 年,则将在现有的肯尼亚 2010 年图表上绘制肯尼亚 2011 年数据。所以.exit().remove()似乎不起作用。

完整代码在笨蛋在这里 http://plnkr.co/edit/AmPfwCn5PrlkMEVhzANc?p=preview.

相关代码位如下:

        //Creating groups for regions
        regions = svg.append("g")
          .classed("regions", true);

        region = regions.selectAll(".region")
          .data(dataset);

        region.enter()
          .append("g")
          .attr("class", "region");

        //This transition moves the rects horizontally. 
        //exit().remove() is not working.
        region.transition()
          .duration(1500)
          .attr("transform", function(d) { 
              return "translate(" + x(d.key) + ",0)"; 
            });

        region.exit().remove();

        rects = region.selectAll("rect")
            .data(function(region) { 
              return region.values;
            });

        rects.enter()
            .append("rect")
            .attr("x", 0)
            .attr("width", barWidth);

        rects.transition()
            .duration(2000)
            .attr("y", function(region) {
              return y(region.values[0][subject]);
            })
            .attr("height", function(region) { 
              return h - y(region.values[0][subject]);
            })
            .attr("class", function(region) { return region.key; });

        rects.exit().remove();

它看起来是这样的:

任何帮助表示赞赏;提前致谢。


您每次都会附加一个带有“regions”类的新“g”元素,因此它是空的,并且您的 selectAll(".region") 也是空的,导致每个数据点都在 Enter() 集中。您应该检查是否存在具有“regions”类的元素并选择它而不是附加它。也就是说,从

//Creating groups for regions
regions = svg.select(".regions");
if(regions.empty()) {
  regions = svg.append("g")
    .classed("regions", true);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

d3.js - .exit().remove() 组元素不起作用 的相关文章

  • 如何进行多个 d3 窗口大小调整事件

    我有三个svg一页上的元素 每个元素都由 D3 陪伴 每个都有自己的页面调整大小逻辑 由我写的简单模块 https github com TimeMagazine d3 base让他们做出反应 问题在于 只有最后一个调整大小事件被触发 因为
  • 如何精确缩放已翻译的d3地图

    我有一张已翻译的地图 以使其正确适合画布 我正在尝试实现一种缩放它的方法 它确实有效 但是当您放大时它会远离中心 而不是以鼠标甚至画布为中心 这是我的代码 function map data total views var xy d3 ge
  • Dimple.js - 将数据标签添加到条形图的每个条形

    我使用的是dimple js 它基于d3 js 是否可以向本示例中提到的条形图的每个条形添加数据标签http dimplejs org examples viewer html id bars vertical http dimplejs
  • 快速响应的交互式图表/图形:SVG、Canvas 还是其他?

    我正在尝试选择正确的技术来更新一个项目 该项目基本上在可缩放 可平移的图表中渲染数千个点 当前使用 Protovis 的实现性能不佳 在这里查看 http www planethunters org classify http www pl
  • D3 强制布局,较大的节点聚集在中心

    我一直在修改将用于标签云的强制布局 每个标签都由一个
  • d3js 折线图——如何将最后一步延伸到范围末尾?

    很简单 但我无法摆脱这个问题 线是两点 值 之间的链接 从值 A 绘制到值 B 因此 假设 A 的值为 10 B 的值为 20 而 C 缺失 现在从 0 到 10 到 20 的线已经绘制完毕 我想画从 0 到 10 到 20 到 25 的线
  • d3 树 - 有相同孩子的父母

    我一直在将代码从 JIT 转换为 D3 并使用树布局 我已经复制了代码http mbostock github com d3 talk 20111018 tree html http mbostock github com d3 talk
  • 动画 D3 地球仪 (d3.geo.azimuthal)

    我对 d3 javascript 库有疑问 我想使用方位角 http mbostock github com d3 talk 20111018 azimuthal html地球 我想从地球上的经度和纬度坐标插入点 并使地球动画化 而无需使用
  • 如何在 d3 中使用SimulationLinkDatum和SimulationNodeDatum

    我在使用SimulationLinkDatum 类型时遇到问题 我创建了两个类 Node 和 Link 来实现SimulationNodeDatum 和SimulationLinkDatum 当我尝试使用SimulationLinkDatu
  • svg / d3.js 矩形一侧的圆角

    我知道 svg 有一个内置函数可以做圆角 但我只需要在四个角中的 2 个上做圆角 我知道我可以在彼此之上绘制多个矩形来模仿这一点 但这看起来有点俗气 有什么方法可以使用剪辑或任何 d3 js 方法来做到这一点吗 现在我有一个水平条形图 其中
  • 使用 Meteor 中的 D3 访问 csv 文件

    我已经使用 D3 成功渲染了一个 HTML 表格 显示了 csv 文件中的数据 但是当我将相同的代码移入 Meteor 项目时 我遇到了问题 传递到 d3 csv 回调中的数据对象一次拾取 HTML 文件 1 行 而不是 csv 数据 仅当
  • SVG 文本在 IE 中消失,直到我单击它

    我在 Internet Explorer Edge 以 Win7 上的为准 中遇到与 SVG 创建和操作相关的问题 在我正在开发的应用程序中 我们使用 d3 生成 SVG 形式的图形 在 Chrome 和 Firefox 中 它们工作得很好
  • 窗口调整大小事件上的响应式画布

    我是画布概念的新手 我正在尝试使用 D3 js 绘制画布 我想让画布根据窗口屏幕大小进行响应 function onResize var element document getElementsByTagName canvas 0 var
  • d3.js - 具有树形布局,如何更改 X 轴以使用 D3 中的时间刻度?

    我有这个树布局 需要它在 X 轴上使用时间刻度来将节点固定为日期 另外 我需要保留根节点 它有一个is rootJSON 数据中的属性 在时间范围之外 Here http codepen io anon pen kIJxo是具有树布局工作的
  • 显示具有多个父代的 D3 树

    我目前有this http bl ocks org mbostock 4339083图已实现 我希望在描述具有多个父节点的子节点时保持结构和可折叠性 有没有办法做到这一点 我研究了力图 但我也想保留一组层次结构 这意味着 1 级的父级可以有
  • D3:在一个文件夹中加载多个csv数据文件

    我正在使用 d3 创建可视化 我的数据由同一文件夹中的 80 多个 CSV 文件组成 所以我想知道是否有一种简单的方法可以加载所有这些 我在想也许检查文件夹中有多少文件 然后递归加载它们 不过D3好像不行 任何建议 将不胜感激 谢谢 当你想
  • 使用 pandas“to_csv”防止尾随零

    我正在尝试将 CSV 字符串导出到 D3 Web 应用程序 但是命令to csv坚持在数据中添加尾随 0 这会妨碍 D3 的正确使用 这是一个说明问题的最小示例 我的 简化的 数据框是 gt gt gt df pd DataFrame Al
  • 将数据从 Django 传递到 D3

    我正在尝试使用 Django 和 D3 js 编写一个非常基本的条形图 我有一个名为 play 的对象 其中包含一个名为 date 的日期时间字段 我想要做的是显示一段时间内按月分组的播放次数 基本上我有两个问题 如何将这些内容按月分组并统
  • 具有负值的条形图

    我需要创建一个可以有负值的 d3 条形图 理想情况下 零轴位置应根据数据的范围来计算 但我会选择一个假设对称正负范围的解决方案 即它始终位于图表的中间 这是我想要实现的目标的示例 好吧 假设您有一个数字数组作为数据集 其中包括一些正值和负值
  • 如何为 D3 条形图分配随机颜色?

    我正在根据下面的模型制作 D3 条形图 如何使条形具有随机颜色 jsFiddle http jsfiddle net rdesai MjFgK Code svg append g attr class x axis attr transfo

随机推荐