使用仅显示唯一值的 D3 对列表进行排序

2024-04-11

我需要对 D3 上显示唯一值的列表进行排序。我可以对其进行排序,但它显示了它的所有出现情况。该文件是 csv,我想按“邮政编码”列对其进行排序。仅作为背景,我稍后将使用此列表作为下拉菜单,因此这是过滤数据的一种方法。

这就是我所拥有的:

var heatmapChart = d3.csv("heatmap.csv", function(buckets) {
    buckets.sort(function(a, b){
        return d3.ascending(a["Zip Code"], b["Zip Code"]); 
    })

这给了我一个排序列表,例如:

10001
10001
10001
10005
10005
...

我还用过:

d3.map(buckets, function(d) { return d["Zip Code"]; }).size();

继一个在这里发帖 https://github.com/d3/d3/issues/472作者:@mbostock 但这并没有做到。


使用ES6,为了获取对象数组(这里称为data)你可以简单地这样做:

var buckets = [...new Set(data.map(d => d.zip))];

让我们看看它的实际效果。在下面的演示中,我使用<pre>元素来重现 CSV,因为堆栈片段不允许我上传真正的 CSV 文件。除此之外,我使用包含两列的 CSV,以更好地模拟真实情况(d3.csv为您提供一个对象数组,而不是一个简单的数组,正如您的问题所暗示的那样)。

在第一个演示中,我们使用sort()仅功能。您可以看到数据已排序,但我们有重复的值:

var data = d3.csvParse(d3.select("#csv").text());

data.sort(function(a, b) {return d3.ascending(a.zip, b.zip);});

console.log(data.map(d=>d.zip));
pre{
    display: none;
}
<script src="https://d3js.org/d3.v4.min.js"></script>
<pre id="csv">name,zip
a,1001
b,1003
c,1008
d,1005
e,1001
f,1003
g,1007
h,1002
i,1003
j,1008
k,1002</pre>

现在相同的代码,使用扩展运算符和new Set()。这是一个两步解决方案:首先我们对数据进行排序,然后我们创建具有唯一值的数组。核实:

var data = d3.csvParse(d3.select("#csv").text());

data.sort(function(a, b) {return d3.ascending(a.zip, b.zip);});

var buckets = [...new Set(data.map(d => d.zip))];

console.log(buckets);
pre{
    display: none;
}
<script src="https://d3js.org/d3.v4.min.js"></script>
<pre id="csv">name,zip
a,1001
b,1003
c,1008
d,1005
e,1001
f,1003
g,1007
h,1002
i,1003
j,1008
k,1002</pre>

EDIT:这是 OP 询问的 ES6 之前的解决方案:

var data = d3.csvParse(d3.select("#csv").text());

data.sort(function(a, b) {return d3.ascending(a.zip, b.zip);});

var buckets = data.map(function(d){ return d.zip}).filter(function(value, index, self){
    return self.indexOf(value) === index;
});

console.log(buckets);
pre{
	  display: none;
}
<script src="https://d3js.org/d3.v4.min.js"></script>
<pre id="csv">name,zip
a,1001
b,1003
c,1008
d,1005
e,1001
f,1003
g,1007
h,1002
i,1003
j,1008
k,1002</pre>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用仅显示唯一值的 D3 对列表进行排序 的相关文章

  • 如何使用 JavaScript 创建链接?

    我有一个标题字符串和一个链接字符串 我不知道如何将两者放在一起以使用 JavaScript 在页面上创建链接 任何帮助表示赞赏 我试图解决这个问题的原因是因为我有一个 RSS 源并且有一个标题和 URL 列表 我想将标题链接到 URL 以使
  • Chart.js 在初始化时设置活动段

    我正在使用 Chart js v2 并且尝试在加载图表时模拟圆环图上某个段的 悬停状态 因此看起来有一个部分已突出显示 我已经搜索和梳理了代码一天 但找不到一个好的方法来做到这一点 提前致谢 设置片段的悬停样式有点令人困惑 因为它没有真正记
  • Javascript Promise“then”始终运行,即使 Promise 未能执行

    我希望当调用第二个 then 时不执行第三个 then 但是 即使 Promise 被拒绝 调用第二个 then 并且代码返回 rejected 然后返回 undefined 它仍然调用第三个 then 如何不运行第三个 then 这样 未
  • 为什么 iife 在一个简单的例子中不起作用?

    我不明白为什么函数表达式调用不起作用并抛出错误 你能给我解释一下吗 var a function x alert x function a 1 谢谢大家 任务比我想象的要容易得多 这是因为 JS 将 IIFE 解析为函数的参数调用 这样做时
  • 如何在vb.net中对datagridview的3列进行排序

    下面我想对 ProductCode ColorCode 和 Size 列进行排序 请指导 对 大小 列中的信息进行排序 Size Number sequence XS 1 S 2 M 3 L 4 XL 5 XXL 6 2L 7 3L 8 4
  • 如何更改 Google Maps v3 API for Directions 中的开始和结束标记图像

    我使用 DirectionsRender 绘制了一条路线 但我不知道如何用我自己的标记替换通用的 Google 标记 我知道并在正常的谷歌地图情况下使用它 但发现很难用开始和结束的方向标记来做到这一点 如果这是一个愚蠢的问题 感谢您的任何建
  • 如何将内联 JavaScript 与 Express/Node.js 中动态生成的内容分开?

    对于具有几年 Web 开发经验但没有找到答案的人来说 这是一个有点菜鸟的问题程序员堆栈交换 or Google 我决定在这里问一下 我在用Express网络框架Node js 但这个问题并不特定于任何 Web 框架或编程语言 以下是从数据库
  • 图像无法在带有 DOM 的 IE 中加载:控制台中的 7009 错误(无法解码)

    当在 IE 中的单个页面上加载许多图像时 在 IE11 中重现 其中一些图像开始加载失败 并在控制台中出现类似以下警告的内容 DOM7009 无法解码 URL 处的图像 某些唯一的 url 当我查看网络流量时 似乎确实从服务器收到了每个图像
  • 防止 iOS 键盘在 cordova 3.5 中滚动页面

    我正在使用 Cordova 3 5 和 jQuery mobile 构建 iOS 应用程序 我在大部分应用程序中禁用了滚动功能 但是 当我选择输入字段时 iOS 键盘会打开并向上滚动页面 我不想要这个功能 由于输入足够高 键盘不会覆盖它 我
  • 将 GMT 时间转换为当地时间

    我以这种格式从我的服务器获取 GMT 时间 Fri 18 Oct 2013 11 38 23 GMT 我的要求是使用Javascript将此时间转换为本地时间 例如 如果用户来自印度 首先我需要采用时区 5 30并将其添加到我的服务器时间并
  • 调整图像大小并将画布旋转 90 度

    这里有很多关于在 js 上使用画布旋转图像的主题 我阅读了其中的大部分内容 但无法找到解决我的问题的方法 我正在接收任何分辨率的图像 来自上传组件 我将其大小调整为 1024x768 如下所示 var canvas document cre
  • Java按日期升序对列表对象进行排序[重复]

    这个问题在这里已经有答案了 我想按一个参数对对象列表进行排序 其日期格式为 YYYY MM DD HH mm 按升序排列 我找不到正确的解决方案 在 python 中使用 lambda 很容易对其进行排序 但在 Java 中我遇到了问题 f
  • 在 HTML5 画布中,如何用我选择的背景遮盖图像?

    我试图用画布来实现这一点 globalCompositeOperation 但没有运气 所以我在这里问 这里有类似的问题 但我没有在其中找到我的案例 我的画布区域中有图层 从下到上的绘制顺序 画布底座填充纯白色 fff 用fillRect
  • Javascript split 不是一个函数

    嘿朋友们 我正在使用 javascript sdk 通过 jQuery facebook 多朋友选择器在用户朋友墙上发布信息 但是我收到此错误friendId split 不是函数 这是我的代码 function recommendToFr
  • 在移动设备上滚动

    这个问题更多的是一个建议研究 我确实希望它对其他人有帮助 并且它不会关闭 因为我不太确定在哪里寻求有关此事的建议 在过去的 6 个月里 我一直在进行移动开发 我有机会处理各种设备上的各种情况和错误 最麻烦的是滚动问题 当涉及到在网站的多个区
  • Vue 和 Vuex:处理依赖的计算属性

    我的应用程序是一个使用 Vuex 在 Vue 中构建的精简电子表格 关键组件是TableCollection Table and Row The TableCollection有一个包含多个的数组Table对象 每个Table有一个包含多个
  • 使用日期 Swift 3 对字典数组进行排序

    我有一个名为 myArray 的数组 其中添加了字典 我希望该字典按时间排序 这是字典中的键 那个时间是在 String 中 时间的日期格式为 yyyy MM dd HH mm ss 我尝试使用下面的代码解决方案 但给出了 从 字符串转换
  • Jquery - 选择选项后如何获取选项的特定数据类型?

    我将直接跳到标记 然后解释我想要做什么 HTML 选择选项
  • 如何确定所有角度2分量都已渲染?

    当所有 Angular2 组件完成渲染时 是否会触发一个角度事件 For jQuery 我们可以用 function 然而 对于 Angular2 当domready事件被触发 html 只包含角度组件标签 每个组件完成渲染后 domrea
  • 如何使用asm.js进行测试和开发?

    最近我读到asm js规范 看起来很酷 但是是否有任何环境 工具来开发和测试这个工具 这还只是处于规范阶段吗 您可以尝试使用 emscripten 和 ASM JS 1 并从侧分支在 firefox 构建中运行它 有关 asm js 的链接

随机推荐

  • 控制 Android NDK 中的编译器标志?

    我知道我可以使用LOCAL CFLAGS将参数传递给编译器 然而 ndk build正在我的后面插入选项LOCAL CFLAGS 因此它们优先 例如我想指定 Ofast but ndk build adds O2在我自己的标志之后 并且由于
  • 在Python中处理大型密集矩阵

    基本上 在 python 中存储和使用密集矩阵的最佳方法是什么 我有一个项目 可以生成数组中每个项目之间的相似性度量 每个项目都是一个自定义类 并存储一个指向另一个类的指针和一个表示它与该类的 接近度 的数字 目前 它在处理约 8000 个
  • 为什么 Linq Contains 会生成此 SQL?

    背景 我正在开发一个系统 用于清理内部客户列表并找出联系人的电子邮件地址 其中我们已经拥有该公司其他人的电子邮件地址 为了做到这一点 我有 简化的 3 个表 Contacts ID CompanyId Email Domain 电子邮件域名
  • Fragment getArguments(在 onResume 中)返回 null

    我正在尝试将一些数据从活动发送到片段 我需要获取数据onResume片段的方法 但我想这是不可能的 参数只能在 onCreate 中接收吗 活动 public void someMethod String someString test B
  • 禁用触发的 Azure WebJob

    我有一个 webhook 触发的 Azure WebJob 由于 原因 我无法控制发送网络钩子的系统 每天发送一个 Webhook 它是唯一由 WebApp 托管的 WebJob 在测试过程中 我想禁用此 WebJob 因此我停止了 Web
  • “/”应用程序中的服务器错误。不提供此类页面

    我有一个主机 我用它托管了一个网页 cshtml扩大 我的主人是arvixe com它提供 ASP 和 NET 托管 但是当我尝试加载网页时 我收到此错误消息 应用程序中的服务器错误 不提供此类页面 说明 您请求的页面类型未被提供 因为它已
  • Microsoft Edge 不会在 Vagrant VM 中加载本地 nginx 网站

    我遇到了一个奇怪的问题 Microsoft Edge 无法加载托管在 vagrant 虚拟机内的本地 Craft CMS 网站 任何加载本地配置的主机名或 IP 的尝试都会返回 嗯 我们无法访问此页面 错误 我的主机文件中有一行 192 1
  • 使用“window.location.href”的函数中的两个 URL

    我正在使用 Marketo Embed 它允许我在使用时添加它 我的目标是使用 window location href 函数打开第一个 URL 一个 zip 文件 然后打开一个新 URL 一个页面 它仅使用其中一个 URL 如果它们是唯一
  • Gradle 找不到依赖项

    我正在尝试使用 Gradle 文件如下所示 Apply the java plugin to add support for Java apply plugin java In this section you declare where
  • 如何在tomcat上运行react应用程序

    我正在尝试运行以下示例 https github com ceolter ag grid react example https github com ceolter ag grid react example ag grid 反应示例 但
  • 以 jpeg 格式保存色彩空间

    我有一个 servlet 来转换和缓存较小版本的照片 它是使用 java awt image javax imageio 和第三方重采样过滤器实现的 原件均使用 sRGB 颜色配置文件上传 当我重新采样并再次保存它们时 它们仍然处于 sRG
  • 如何检查是否从 GridView 中选择了任何行?

    我在 aspx 页面中有一个 gridview
  • 如何在 MySQL 5.7 中获取 JSON 数组中唯一/不同的元素

    我有 mysql 5 7 带有一个包含一些 JSON 列的非规范化表 我需要为数组列提取每行的唯一 不同值 例如 a b b a c 预期输出应该是 a b c SET json a b b a c 我需要在此列表中获取唯一值 a b c
  • 比较两列并更改第三列时如何使用 ifelse?

    我仍然发现 R 中的 ifelse 结构有点令人困惑 我有以下数据框 df lt structure list snp structure 1 11 Label c AL0009 AL00014 AL0021 AL00046 AL0047
  • 是否存在 EOF != -1 或 WEOF != -1 的常见 C 环境

    C 标准定义EOF and WEOF使用以下语言 7 21 1 输入 输出 简介 标题
  • admob 使用的 WebViewCoreThread 即使父 Activity 已暂停,AdView 也会使用高 CPU [重复]

    这个问题在这里已经有答案了 我正在使用 Google Admob SDK v6 1 0 https developers google com mobile ads sdk download 并以编程方式实例化 com google ads
  • 有没有办法获取窗口的所有 BindingExpression 对象?

    有没有办法获取窗口的所有 BindingExpression 对象 当需要触发刷新表单的 PropertyChanged 事件数量太高且不是一个好的选择时 我尝试刷新表单 我正在考虑以另一种方式进行操作 即表单 窗口可以重新查询所有绑定 如
  • 如何让 HTTP 请求在 Flutter Web 中工作?

    我正在尝试从 我的网站 链接获取数据 http mrmatjar com kaka dataaza php http mrmatjar com kaka dataaza php 这是我的代码 import dart convert impo
  • 将文件中的非连续块映射到连续内存地址

    我对使用内存映射IO的前景感兴趣 最好是 利用 boost interprocess 中的设施实现跨平台 支持 将文件中的非连续系统页面大小块映射到 内存中连续的地址空间 一个简化的具体场景 我有许多 普通旧数据 结构 每个结构都有固定长度
  • 使用仅显示唯一值的 D3 对列表进行排序

    我需要对 D3 上显示唯一值的列表进行排序 我可以对其进行排序 但它显示了它的所有出现情况 该文件是 csv 我想按 邮政编码 列对其进行排序 仅作为背景 我稍后将使用此列表作为下拉菜单 因此这是过滤数据的一种方法 这就是我所拥有的 var