如何处理 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() 中缺少数据点的图层 的相关文章

  • 需要js、d3 和 nvd3 集成

    我面临整合的问题要求 questions tagged requirejs with d3 questions tagged d3 and nvd3 questions tagged nvd3 我找到了一个使用 require 的简单解决方
  • 如何根据D3中的数据创建元素?

    看着sample https github com mbostock d3 wiki Selections wiki data d3 select body selectAll div data 4 8 15 16 23 42 enter
  • 平移/缩放顺序尺度?

    我正在使用 d3 渲染简化的甘特图 并使用 d3 behavior zoom 进行平移和缩放 x 刻度是一个时间刻度 稍微修改为列中的中心日历日等 并且工作得很好 但是我在决定如何缩放 平移 y 刻度时遇到问题 其域是通常会出现的任务列表图
  • D3.js - 更改鼠标悬停时元素的不透明度 IF 条件 = false

    我正在制作一个带有过滤器的交互式 D3 js 图表 当用户单击选定的复选框时 该过滤器会显示点 此外 在鼠标悬停事件上 所选点旁边将出现一个弹出窗口 其中包含一些信息 由于图表上的点数量相对较多 因此我选择在取消选中相应复选框时使相关点变得
  • 将json解析为条形图d3js

    我正在尝试使用 json url 创建条形图 关于印象和时间 我认为我没有正确引用 data data 中的数据 如何从 d3 中的 json 文件访问印象字段 var url https script google com macros
  • 如何从此 d3.js layout.tree 获取树祖先和树后代的列表?

    我正在尝试和修改this https bl ocks org mbostock 4339083d3 js 的示例 用于根据 JSON 树结构绘制树 这就是树的一部分开始时的样子 我正在尝试进行两个单独的修改 但我不知道该怎么做 当单击节点的
  • dc lineChart 单击时弹出数据点信息

    我正在尝试检测折线图数据点上的点击 Per this answer dc scatter plot binding onClick event https stackoverflow com a 22772340 1873386 I am
  • 如何处理 d3 中 Beeswarm 图中的碰撞?

    我一直在玩这个例子here https gf neocities org co2bs co2bee html一会儿 我想做的是突出显示图中的单个节点 圆圈 通过使用边框使其变大 稍后我也想在其中添加文本或字母 目前 我已经圈了Bhutan图
  • d3js 折线图——如何将最后一步延伸到范围末尾?

    很简单 但我无法摆脱这个问题 线是两点 值 之间的链接 从值 A 绘制到值 B 因此 假设 A 的值为 10 B 的值为 20 而 C 缺失 现在从 0 到 10 到 20 的线已经绘制完毕 我想画从 0 到 10 到 20 到 25 的线
  • 多个链接 dc.js 图表的 d3-tooltips

    我正在寻找修改 dc js 的开箱即用工具提示 似乎有一个解决方案使用d3 js 工具提示 https github com Caged d3 tip as in 这个问题 https stackoverflow com questions
  • 赋予 d3 序数轴标签与尺度名称不同

    我有一个序数scale具有不同值的某些标签 我想显示该比例的轴 其中轴标签与比例标签不同 我有这个代码 var width 1000 var height 600 var margins left 100 40 right 25 botto
  • 如何从 mysql 数据库中提取数据并使用 D3.JS 进行可视化?

    我有一个数据库MySQL我想在其中可视化D3 JS 为了做到这一点 首先我想parse中的数据JSON格式 然后编写一个基本代码 从数据库中提取数据并使用D3 JS 我环顾四周 但找不到我想要的东西 因为我是新手D3 JS 我怎样才能做到这
  • D3.以编程方式缩放后使用鼠标滚轮时缩放会跳转

    当我通过单击鼠标缩放到特定位置然后尝试平移或使用鼠标滚轮时 缩放行为会跳跃 看来我的缩放级别正在恢复 就像单击鼠标之前一样 这是我的事件处理程序 function click d var x y k if d centered d var
  • 请建议 D3.js 进行 CSV 数据导入

    我正在尝试使用 D3 js 导入 CSV 数据 var englishArray d3 csv data csv function d return d value function error data var englishArray
  • 时间序列折线图与轴不同步

    本实验基于这个d3官方例子 http bost ocks org mike path 我想要实现的是可视化时间序列数据的最后 x 分钟 我有这个代码的副本jsfiddle http jsfiddle net 225dC 3 单击以添加新数据
  • d3.js:tickformat - 添加 % 符号而不乘以 100

    我的数据有百分比 例如 10 1 3 2 5 4 d3 format 0f 会给我 10 3 5 d3 format 0 会给我 1010 320 540 乘以 100 如何得到 10 3 5 我不知道在哪里添加 到第一种情况 或者在第二种
  • SVG 文本在 IE 中消失,直到我单击它

    我在 Internet Explorer Edge 以 Win7 上的为准 中遇到与 SVG 创建和操作相关的问题 在我正在开发的应用程序中 我们使用 d3 生成 SVG 形式的图形 在 Chrome 和 Firefox 中 它们工作得很好
  • nvd3散点图中自定义无数据标签

    我正在尝试使用自定义消息而不是显示的 无可用数据 消息 我正在使用 nvd3 散点图 气泡图 我遇到了一个建议here https stackoverflow com questions 17458236 nvd3 showing empt
  • D3v6 嵌套图 - 嵌套 join()?

    我想可视化每个节点的 孩子 洞察力 我猜 D3v6 join 函数可以嵌套 不幸的是我找不到任何例子 下面的代码片段包含一个具有 3 个节点和子节点作为属性的outerGraph 到目前为止 这些孩子还没有被使用 相反 innerGraph
  • 为什么 d3.js-lasso 不读取 svg 变量

    https jsfiddle net t52f1rn7 https jsfiddle net t52f1rn7 我正在尝试制作一个线条末端有圆圈的折线图 我想选择两个点并通过单击绘制线条 然后我找到了套索插件 我尝试将它用于相同的目的 选择

随机推荐

  • 系统属性 在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