按单位和百分比排列的堆积条形图

2023-11-29

Summary

我想显示一个条形图,其维度为天,堆叠类别为另一个(即 x 轴 = 天且堆栈 = 类别-1),但是,我不是显示每个组/堆栈的简单数量总和,而是显示想要显示一天的百分比。

JSFiddle https://jsfiddle.net/wostoj/L1q50d4g/

Details

我有包含日期​​、数量和其他分类器的数据。为了这个问题的目的,我可以将其简化为:

data = [
 {day: 1, cat: 'a', quantity: 25},
 {day: 1, cat: 'b', quantity: 15},
 {day: 1, cat: 'b', quantity: 10},
 {day: 2, cat: 'a', quantity: 90},
 {day: 2, cat: 'a', quantity: 45},
 {day: 2, cat: 'b', quantity: 15},
]

我可以设置一个条形图,通过day,显示总单位数 (quantity), stacked by cat (see JSFiddle)。但我想做的是设置相同的图表,以便它显示每个的数量day, 堆叠为cat,占总数的百分比quantity那天。因此,从图形上看,输出将如下所示。

[
 {day: 1, cat: 'a', percent: 0.5}, //   25    / (25+15+10)
 {day: 1, cat: 'b', percent: 0.5}, // (15+10) / (25+15+10)
 {day: 2, cat: 'a', percent: 0.9}, // (90+45) / (90+45+15)
 {day: 2, cat: 'b', percent: 0.1}  //   15    / (90+45+15)
]

Images

左边这个来自上面的数据,可以在JSFiddle中制作。右边的是我想要基于相同的数据集(xf = crossfilter(data);)。我对它进行了硬编码(在 JSFiddle 的上方和中)以创建第二个,只是为了直观地显示我想要做什么。

enter image description here enter image description here


我这通常被称为标准化堆积条形图.

我将仅使用一组数据来组织数据,以便使用自定义的归约函数立即访问所有值:

var group = dayDim.group().reduce(
    function(p, v) {
        p[v.cat] = (p[v.cat] || 0) + v.quantity;
        return p;
    },
    function(p, v) {
        p[v.cat] = p[v.cat] - v.quantity;
        return p;
    },
    function() {
        return {};
    });

这几乎是标准一次减少多个值的方法来自常见问题解答。

这样做的优点是,当您访问这些值时,您可以轻松地除以所有值的总和:

  .group(group, 'a', kv => kv.value.a / d3.sum(Object.values(kv.value)))
  .stack(group, 'b', kv => kv.value.b / d3.sum(Object.values(kv.value)))

sum-to-one stacks

你小提琴的叉子。

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

按单位和百分比排列的堆积条形图 的相关文章

  • DC.js - 取消选择功能或过滤除单击的功能之外的所有功能

    我不确定这是否可能 并且对此进行研究没有运气 我正在使用 DC js 图表和 crossfilter js 开发仪表板 我将使用行图作为示例 是否可以做相反的事情 而不是点击要过滤的项目 例如 当我单击行图中的某个项目时 它将取消选择该项目
  • DC.js 交叉过滤器维度计数直方图

    我有一个交叉过滤器 输入了以下数据结构 project subproject cost data PrA SubPr1 100 PrA SubPr2 150 PrA SubPr3 100 PrB SubPr4 300 PrB SubPr5
  • DC.js 数据表的自定义文本过滤器

    我正在构建一个仪表板来显示一些数据 我有几个图表和一个列出所有数据的表格 我正在尝试添加搜索功能来过滤图表 我有很多公司以及每个公司的一些数据 因此 如果我搜索 Appl 则数据表中只会列出以 Appl 开头的公司 并且图表将反映这一点 当
  • crossfilter中的reduceAdd、reduceSum、reduceRemove函数是什么?应该如何使用它们?

    有人可以用简单的术语解释一下reduce函数如何及其参数reduceAdd reduceSum reduceRemove工作于crossfilter 请记住 映射缩减通过特定维度的键来缩减数据集 例如 让我们使用带有记录的交叉过滤器实例 n
  • d3 onclick 获取具体路径/栏参考

    如果我有 d3 dc 图表 并且我设置了一个单击事件处理程序 如下所示 var data city New York neighborhood N A hits 200 city New York neighborhood Brooklyn
  • 禁用 dc.js 中的交互性

    我有许多使用创建的条形图dc js 在默认行为中 用户可以单击并拖动其中任何一个来更新交叉过滤器 如何使图表 仅显示 也就是说 当其他组件更新交叉过滤器时 图表也会更新 但用户无法选择 仅显示 图表中的数据来更新交叉过滤器 None
  • 如何从 dc.js 行图中删除空条,每当维度为空或为空时,行图上就会出现一个空条

    如何从 dc js 行图中删除空条 每当维度为空或为空时 行图上就会出现一个空条 你必须使用假组 const remove empty bins source group gt return all gt return source gro
  • 来自 Crossfilter 示例的复合图

    从付款示例开始交叉过滤器 https github com square crossfilter wiki API Reference https github com square crossfilter wiki API Referen
  • 如何对 numberDisplay 的所有值求和,不包括类别

    我有一组数据 我想默认将过滤器应用到 numberDisplay 数据是这样的 data category A value 10 category B value 10 category C value 10 category S valu
  • 为什么画笔阻止 dc.js barChart 工具提示出现?

    我不明白为什么要实施这种行为 有什么好的理由吗 为了具有画笔功能 必须在图形顶部绘制一个捕获所有鼠标事件的透明矩形 这可以防止任何鼠标事件触发主图形元素上的工具提示事件处理程序 这就是dc js API https github com d
  • dc.js - 动态更改折线图中堆叠层的 valueAccessor 并重绘它

    我正在尝试实现一个仪表板来显示基本数据 我实际上完全陷入了一个问题 奇怪的是 我在网上找不到任何类似的东西 所以我没有太多关于如何继续前进的线索 我主要有两个图表 a lineChart called stackChart that 使用
  • 如何从 dc js 图表中的 x 轴删除周末日期

    我有 2018 年 1 月以来每个日期的数据 我正在根据这些数据创建一个堆积折线图 每个周末我的数据计数为零 因此每个周末它都会在我的图表中显示下降 当数据达到零时 我想避免这种下滑 我有一个日期列和一个日列 日 列的值从 1 到 7 代表
  • 避免在自定义交叉过滤器归约函数中进行多次求和

    这个问题是由于创建过程中遇到的一些困难而产生的crossfilter数据集 特别是如何对不同维度进行分组并计算派生值 最终目标是拥有一批dc js使用维度和组的图表 小提琴示例https jsfiddle net raino01r 0vjt
  • 替换交叉过滤器数据,恢复维度和组

    我在用着dc js http dc js github io渲染数据集的漂亮气泡图 底层的 dc js 是交叉过滤器 https github com square crossfilter 我想使用来自服务器的新数据顺利刷新我的图表 这个问
  • 如何同时使用 2 个范围滑块?

    我想使用 2 个范围滑块同时根据年龄和身高过滤表中的数据 我已经使用以下方法实现了 2 个范围滑块 年龄和身高 d3 slider js https github com MasterMaps d3 slider and a dc data
  • 使用不同颜色的 dc.js 显示原始(有条件)拉丝未拉丝交叉过滤器条

    假设我们有以下 crossfilter dc js 应用程序 虽然这很好 但用户在刷牙时会失去对人群的 参考 我想要图表x y z and a在刷其他图表时保留 基础 柱 也许是不同的颜色 如下所示 我相信这可能需要更新dc renderA
  • 将任何 D3.js 图表与 DC.js 集成

    我试图弄清楚如何轻松地将任何 D3 js 图表与 DC js 库集成 以便在所有图表之间使用交叉过滤功能 我也确实理解以前曾问过这种性质的问题 添加链接以供参考 DC js 监听图表组渲染 https stackoverflow com q
  • 在 Crossfilter 中使用过滤器

    我刚刚开始使用 crossfilter 和 d3 js 我正在尝试 API 参考中给出的一些片段 我有以下数据 var payments crossfilter date 2011 11 14T16 17 54Z quantity 2 to
  • DC.js 中的工具提示(D3 库)

    DC js 具有强大的内置功能 可显示每个工具提示文档 https github com dc js dc js blob master web docs api latest md title titleFunction 功能 无论如何
  • 响应式 dc.js 图表占据了整个窗口

    我在使图表响应时遇到问题 我尝试将相同的示例应用于此链接中的 DC js 和 Crossfilter 调整大小系列 https github com dc js dc js blob master web src resizing resi

随机推荐

  • 如何将 NumPy 数组的字符串表示形式转换为 NumPy 数组?

    功能numpy array repr可用于创建 NumPy 数组的字符串表示形式 如何将 NumPy 数组的字符串表示形式转换为 NumPy 数组 假设字符串表示如下 array 0 00470366 0 00253503 0 003063
  • MySQL SELECT 语句的两行之间的差异

    我试图区分 mysql 数据库中的两行 我有这张表 其中包含 ID 公里数 日期 car id car driver 等 由于我并不总是以正确的顺序在表中输入信息 因此我最终可能会得到如下信息 ID Kilometers date car
  • 在.NET中使用PerformanceCounter测量CPU使用率的正确方法

    我想在网络服务中衡量我的商务舱的性能 我怎样才能通过编码来做到这一点 我想知道我的业务类执行其操作需要消耗多少 CPU 以及如果 Web 服务同时获得多个服务调用 性能会如何变化 我不想衡量我的网络服务的性能 我只想知道我的商务舱表现如何
  • 空手道 - 无法传递正确的授权标头

    我在为我的 graphql 端点传递正确的标头时遇到一些问题 Postman 中的用例 调用 requestToken 端点获取 sessionToken 值 requestToken 响应包含 Key Value 和 Token Valu
  • 具有泛型变量的结构体方法

    我有以下使用泛型的代码 我知道泛型不能与方法一起使用 但可以与类型一起使用 从技术上讲 我的代码符合这两个限制 但我仍然收到错误 main go 12 9 cannot use generic type GenericCacheWrappe
  • Eclipse:自动完成类名时排除特定包

    在 Eclipse 中自动完成类名时 例如如果您输入 ListITab 将出现一个弹出菜单 为您提供匹配的类名称以供完成 您可以使用鼠标或使用箭头键进行选择 在这个例子中 我几乎肯定想要java util ListIterator我几乎从来
  • SAP 与 Xamarin 集成?

    我正在 Xamarin 平台上工作 我正在寻找 Xamarin 与 SAP 后端的集成 因此 任何人对此有任何了解 请在这里分享 我认为结合使用 SAP 和 Xamarin 的最佳方式是通过 ODATA ODATA 是您可以在 SAP 中创
  • 在seaborn中用中值标记箱线图

    如何使用中值标记 seaborn 图中的每个箱线图 E g import seaborn as sns sns set style whitegrid tips sns load dataset tips ax sns boxplot x
  • 以编程方式设置区域设置

    我的应用程序支持 3 种 很快将支持 4 种 语言 由于几个区域设置非常相似 我想为用户提供在我的应用程序中更改区域设置的选项 例如意大利人可能更喜欢西班牙语而不是英语 有没有办法让用户在应用程序可用的区域设置中进行选择 然后更改使用的区域
  • pyautocad 给出不可谷歌的错误

    OSError WinError 2147221005 无效的类字符串 完整回溯 During handling of the above exception another exception occurred Traceback mos
  • mypy:如何在泛型类中声明返回 self 的方法的返回类型?

    这个答案似乎不适用于泛型 在检查以下代码时 Mypy 抱怨 错误 缺少泛型类型 A 的类型参数 我尝试过使用 A T 对于 TypeVar 但 mypy 说 错误 类型变量 T 未绑定 我也尝试过使用AnyA T 作为返回类型get但这会产
  • 查找列表的平均值

    如何在 Python 中找到列表的平均值 1 2 3 4 2 5 对于 Python 3 8 请使用statistics fmean用于浮点数的数值稳定性 快速地 对于 Python 3 4 请使用statistics mean用于浮点数的
  • 如何将替代文本添加到背景图像?使背景图像易于访问

    我有一个网站 它使用以下方式将许多图像显示为背景图像background size cover调整它们的大小以完全填充元素 同时裁剪掉图像中不适合的任何部分 问题是这些图像并不纯粹是装饰性的 它们是页面信息内容的关键部分 这意味着他们需要a
  • Android 编程和框架/IDE 使用?

    我对 Android 编程很陌生 我主要是一个 NET 人员 我在 Windows Phone 上做过几个项目 我对 MVVM 模式 C 等感到非常满意 然而 我想进入Android开发 因为它是一个重要的平台 我想知道什么是最好的免费方法
  • 使用 r 进行微分

    我是使用 R 或任何类型的编程的新手 我正在尝试区分 3xcos xy 和 x 我尝试了四种不同的方法 想知道哪一种是最好 正确的 D expression 3 x cos xy x D expression 3 x cos xy x D
  • 为什么 put() 不打印一行?

    这是一段代码 def add a b a b end print Tell number 1 number1 gets to f print and number 2 number2 gets to f puts number1 numbe
  • 日期的 JSON 序列化策略

    我遇到的问题是我有一些消费者是Java 一些消费者是浏览器 我的目标浏览器是 IE7 json3 仅适用于 IE7 和 Chrome 对于浏览器 我希望将日期反序列化为DateJavaScript 对象 使用JSON parse 方法 对于
  • 浏览器 JavaScript 中的 new Date().getTime() 是否总是产生 UTC?

    我可以依赖 Date getTime 始终给出 UTC 毫秒数 还是取决于用户的浏览器设置 位置 系统时区 Date getTime 始终返回自纪元以来所有时区同时经历的毫秒数 该格式的日期没有时区 仅在显示期间使用 例如 对于var da
  • 如何在一列中搜索具有多个参数的LINQ?

    例如有这张表 Name BodyType John 1 Ted 2 Daniel 3 George 4 在我的应用程序中 我选中 1 2 和 3 复选框 我应该找到 3 行 约翰 泰德 丹尼尔 而不是乔治 我如何在 LINQ 中获取此查询
  • 按单位和百分比排列的堆积条形图

    Summary 我想显示一个条形图 其维度为天 堆叠类别为另一个 即 x 轴 天且堆栈 类别 1 但是 我不是显示每个组 堆栈的简单数量总和 而是显示想要显示一天的百分比 JSFiddle https jsfiddle net wostoj