如何处理 d3.layout.stack() 中缺少数据点的图层

2023-12-20

我正在使用 d3.stack 创建堆积面积图,但如果每层中的项目数量不相等,则会出现错误。我从这样的数据数组开始:

[  
   {key:'Group1',value,date},  
   {key:'Group1',value,date},  
   {key:'Group1',value,date},  
   {key:'Group2',value,date},  
   {key:'Group2',value,date}  
]

在我通过 Nest() 和 stack() 运行它之后,我最终得到了这种格式,正如预期的那样:

[  
   {key: 'Group1',  
    values: [ {key,value,date}, {key,value,date}, {key,value,date} ] },  
   {key: 'Group2',  
    values: [ {key,value,date}, {key,value,date} ]  }  
]

我稍微修改了一个堆叠区域示例来演示这个 jsFiddle 中的问题:http://jsfiddle.net/brentkeller/rTC3c/2/ http://jsfiddle.net/brentkeller/rTC3c/2/

如果删除 sourceData 数组中的任何一个数据点,您将在控制台中看到错误消息“无法读取未定义的属性‘1’”。

有没有办法让 d3.stack 为缺失的数据点假设零值?如果没有,是否有一个优雅的解决方案来填充缺失值?


这不是 d3 特定的,而是用于填充键控数据数组中的空白的通用解决方案。我修改了你的jsfiddlehere http://jsfiddle.net/N4E5c/3/具有以下功能:

function assignDefaultValues( dataset )
{
    var defaultValue = 0;
    var keys = [ 'Group1' , 'Group2', 'Group3' ];
    var hadData = [ true, true, true];
    var newData = [];
    var previousdate = new Date();
    var sortByDate = function(a,b){ return a.date > b.date ? 1 : -1; };

    dataset.sort(sortByDate);
    dataset.forEach(function(row){
        if(row.date.valueOf() !== previousdate.valueOf()){
            for(var i = 0 ; i < keys.length ; ++i){
                if(hadData[i] === false){
                    newData.push( { key: keys[i], 
                                   value: defaultValue, 
                                   date: previousdate });
                }
                hadData[i] = false;
            }
            previousdate = row.date;
        }
        hadData[keys.indexOf(row.key)] = true; 
    });
    for( i = 0 ; i < keys.length ; ++i){
        if(hadData[i] === false){
            newData.push( { key: keys[i], value: defaultValue, 
                            date: previousdate });
        }
    }
    return dataset.concat(newData).sort(sortByDate);
}

它会遍历给定的数据集,并且每当遇到新的数据集时date值,为任何值分配默认值keys尚未见过。

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

如何处理 d3.layout.stack() 中缺少数据点的图层 的相关文章

  • SVG 路径超出 d3 画笔上的图表区域

    当我尝试刷动和缩放折线图的一部分时 所选区域的某些部分会呈现在图表之外 代码和行为再现可以在以下位置找到这个jsbin https jsbin com jamojonaqu edit js output 单击并拖动以选择一部分并放大 双击以
  • 用渐变色绘制一个 D3 圆

    如何用渐变颜色画一个圆 比如说 从黄色到蓝色的渐变 通常 要创建黄色圆圈 我们可以使用以下代码 var cdata 50 40 var xscale 40 var xspace 50 var yscale 70 var svg d3 sel
  • d3 单击时聚焦于节点

    我正在尝试实现一种力布局 其中单击节点将能够专注于节点周围的区域 我看过一些例子 但我收到一个错误 上面写着link bounds is not defined 我认为边界没有为力布局定义 并且适用于我从中获取聚焦功能的示例http bl
  • d3 转换改变了哪些属性?

    我试图了解 d3 中到底发生了什么转换 例如 var bars svg selectAll null data my values enter append rect statement before transition attr x 1
  • 分层边缘捆绑:添加父组标签

    我对 HTML 和 JavaScript 还很陌生 我面临着著名的分层边缘捆绑可用here https bl ocks org mbostock 7607999 由 D3 js 库生成 My goal is to add a semi ci
  • 我想从 Cakefile 运行 d3

    我想从命令行执行一些 d3 代码 最初我只是尝试了类似的方法 task data Build some data with d3 gt d3 require lib d3 v2 console log d3 version d3 versi
  • 选择 G 元素内的路径并更改样式

    本质上 我试图让除悬停的路径之外的所有路径都变成灰色 而选择的路径则保持其原始颜色 我已经能够将所有其他路径变成灰色 但是我在使用 select this 函数并实际访问我想要更改样式的路径时遇到了问题 看来我实际上已经成功地找到了 g 组
  • 通过 Fabric.js 推送 D3.js 输出以支持 IE8?

    我正在评估Fabric js http fabricjs com 作为替代拉斐尔 js http raphaeljs com 用于创建与 IE8 兼容的交互式可视化 IE8 不支持 SVG 或画布 不幸的是 IE8 支持是不可协商的 Rap
  • 使用 d3.json()/d3.xhr() 进行多部分发布请求

    目前是否不支持通过请求提交多部分表单数据 我了解如何使用 d3 json post 执行 POST 如上所述here https stackoverflow com questions 12493758 xhr post request u
  • d3.js V4 按钮缩放实现表现得很奇怪

    我正在尝试实现 d3 平移和缩放功能 默认的平移和缩放工作正常 但要求是我们还需要放大和缩小按钮 我还实现了缩放按钮 它也有效 奇怪的是 当我第一次移动图像并单击缩放按钮时 图像会移回到以前的位置 不仅是当我第一次用鼠标缩放并使用按钮再次开
  • d3.js 中拖动后(有时)单击事件未触发

    观察到的行为 我正在使用 d3 js 并且我想根据以下情况更新一些数据drag https github com mbostock d3 wiki Drag Behavior wiki on事件 并重绘事件之后的所有内容dragend ht
  • 如何在 d3.scale.ordinal() 中指定域?

    var W 100 var H 200 var data v 4 v 8 v 15 v 16 v 23 v 42 var x d3 scale linear domain 0 max x range 0 W var y d3 scale o
  • 在 d3v4 堆积条形图中使用 JSON

    我找到了一个d3v3堆积条形图示例 http bl ocks org mstanaland 6100713我想使用它 因为它使用 json 数据 还有一个d3v4规范条形图示例 https bl ocks org mbostock 3886
  • 如何运行 D3 示例

    例如https observablehq com d3 zoomable treemap https observablehq com d3 zoomable treemap 如果将脚本片段粘贴到
  • D3.js分组条形图

    I am making a bar chart using D3 js like this source statcan gc ca http www statcan gc ca pub 12 593 x 2007001 figures f
  • 在 D3 中在外部加载的 svg 图形上绘图

    我已经从 svg 文件加载了外部图形 我想尝试在其上绘图 但不知道如何操作 我的简单 d3 代码在这里
  • 元素不适应 Firefox 上的

    使用 ES6 ish D3js 模块运行 Angular 6 应用程序会导致 Firefox 出现问题 Chromium Chrome Safari 和 IE Edge 工作正常 伪代码看起来类似于 生产代码可以在下面找到
  • D3 向对象添加超链接?

    我正在尝试制作 D3 图 它将代表我网站的菜单 我尝试按照此处的其他指南添加超链接 但它们都不起作用 每个对象都会有一个不同的 URL 指向 主页 关于 联系方式等 如果添加超链接 我可以拖动对象吗 这意味着如果我按住单击 如果我单击该对象
  • d3.js 堆叠条形图 - 修改堆叠顺序逻辑

    我想创建一个堆积条形图 其中矩形的顺序由数据值确定 即最大到最小 最高到最短 最富有到最贫穷等 据我所知 在堆叠数据后 initial秩序似乎得到保留 这可以在我的代码片段中看到 硬编码数据让我们可以看到之前和之后发生的情况d3 stack
  • 在 d3.js 中操纵鼠标悬停在“点击区域”

    我想show and hideSVG 中的一个节点 当鼠标移到 mouseout 问题是我的节点内部的形状是一条宽度只有1 5px的路径 因此在鼠标悬停事件中不容易击中该区域 这对用户体验肯定不方便 我想知道是否有办法做到这一点打击范围更广

随机推荐

  • 系统属性 在standalone-full.xml中

    Jboss版本 jboss as 7 1 0 Final 我们可以添加
  • 在 Z3-Python 中,执行模型搜索时出现“builtin_function_or_method' object is not iterable”

    我正在探索在 Z3 Python 中执行 SAT 求解的快速方法 为此 我尝试模仿第 5 1 章的结果https theory stanford edu nikolaj programmingz3 html sec blocking eva
  • 进度对话框和 AsyncTask 错误

    我对 AsyncTask 和 ProgressDialog 有点陌生 每当我调用时都会收到空指针异常错误new MyTask execute 在我的按钮上我的方法不对吗 我的代码有什么问题或者我缺少什么 它应该处理的进程取决于当前TabHo
  • 无法打开文档“Main.storyboard”

    我正在使用 Git 我们两个人一起编码 我提取了我朋友的代码 运行它 它按预期工作了 然后我合并了我们的部分并清除了冲突 几乎所有冲突都在故事板中 由于我正在进行这个合并过程一段时间 因此我对这些细节并不陌生 但是 当我运行代码的合并版本时
  • PostgreSQL,混合食物和食谱

    前一段时间我有一个problem https stackoverflow com questions 17059881 postgresql complex query for calculating ingredients by reci
  • Javafx - 应用程序类可以是控制器类吗

    我目前正在自学 JavaFX 并且我已经采用了一个简单的示例程序 该程序对视图进行了硬编码 并将其转换为使用 FXML 的程序 主要是为了我可以使用 SceneBuilder 来构建 UI 我没有编写单独的控制器类 而是使用应用程序类 因此
  • 詹金斯分支说明符不被遵守

    我有一个 Jenkins 构建配置为从 Gitlab 存储库中提取 我已在构建配置中指定分支说明符仅从一个特定分支中提取 Branch Specifier blank for any origin development 然而 无论提交被推
  • 如果基本 href 设置为“/”以外的值,AngularJS 漂亮的 url 无法在页面刷新时工作

    我是 AngularJS 的新手 我目前在为我的视图编写漂亮的网址时遇到问题 我已经设置了 locationProvider html5Mode true 去除 来自地址栏中显示的 url 但是 这样做后我无法重新路由到所需的视图 我不断收
  • SignalR 背板的可靠性如何?

    对于所有消息是否会到达所有订阅节点的问题 SignalR Backplane 的可靠性如何 底层是否使用可靠的协议 或者消息是否有可能丢失 显然 例如 由于某些网络问题 一个节点可能会关闭一段时间 当再次可达时 SignalR Backpl
  • 如何将 int 变量分配给 int 数组 int C++? [复制]

    这个问题在这里已经有答案了 我想实现数学运算并写入数组 我以 int 形式发送参数 但错误提示数组下标的类型 int int 无效 string clients 5 2 string products 7 string strPrices
  • 在 Web Api 2 中使用 Url.Link 和属性路由

    我想在使用 webapi 2 时向我的 http 响应添加 Location 标头 下面的方法展示了如何使用命名路由来执行此操作 有谁知道是否可以使用作为 webapi 2 的一部分发布的属性路由功能创建 Url Link string u
  • PHP 致命错误:允许的内存大小 1073741824 字节耗尽(尝试分配 16777216 字节)

    I ran 作曲家安装 on my 16 GBMacbook Pro 我得到了这个 distributor portal composer install Loading composer repositories with package
  • 循环跳过偶数

    I 代表全局变量 即名称 I 代表函数内部和外部相同的变量 当 I 1 时 事实首先被调用 这是第一个写入的值 这个值是 传递给函数的虚拟参数 N 同样的 I 现在被 Fact 内部的 DO 循环赋予初始值 2 但由于它大于 N 所以不执行
  • 增加504超时错误

    有什么方法可以使错误 504 网关超时更长 如果可以的话 如何以及更改它的文件位于何处 我在centos 6上使用nginx 根据您拥有的网关类型 您应该使用类似以下内容的内容 proxy read timeout 600s 检查文档 ht
  • 在 Yii2 中,如何从视图文件中的渲染中排除布局?

    我有一个管理员登录页面 我想在没有布局的情况下呈现它 如何在 Yii2 中渲染视图而不渲染主布局 这可以使用以下方法完成renderPartial method 您可以从官方文档中获取更多信息 这是a link http www yiifr
  • 如何使用 symfony2 包含 stripe 客户端 api。如何在 symfony2 中包含没有类的文件

    我试图将此文件包含在我的 symfony2 项目中 该项目是一个包含一堆 require 语句的文件 不幸的是 该文件不包含类 我不想为所有包含我需要的类的包含文件手动编写命名空间 所以我想知道如何以包含我需要的其他文件的方式包含该文件 我
  • CSS 关键帧仅适用于 Chrome

    我正在尝试使用关键帧制作一个简单的动画 但它仅适用于 Chrome 这是代码 为了更短的帖子 我只包含一次关键帧代码 keyframes logokf 0 background image url gfx logo1 png 20 back
  • 使用 mysql 别名从 2 个表中选择列

    我有 2 个表 table a 和 table b 两者都包含一个名为 open 的列 table a open 36 99 36 85 36 40 36 33 36 33 table b open 4 27 4 46 4 38 4 22
  • 无法使用 Flask 服务器在 IIS 上运行 dash 应用程序

    我的 IIS Windows Server 2016 上有两个网站 都使用 Dash 和 Flask 第一个是最小的working由 app py 和 web config 组成的示例 由于某种原因 我无法让第二个站点正常工作 下面附有两个
  • 如何处理 d3.layout.stack() 中缺少数据点的图层

    我正在使用 d3 stack 创建堆积面积图 但如果每层中的项目数量不相等 则会出现错误 我从这样的数据数组开始 key Group1 value date key Group1 value date key Group1 value da