使用仅显示唯一值的 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 对列表进行排序 的相关文章

  • 邮件附件媒体类型错误 Gmail API

    我正在尝试通过 Javascript 客户端中的 Gmail API 发送带有附加 jpeg 文件的消息 到目前为止我写的代码如下 ajax type POST url https www googleapis com upload gma
  • 通过 HTML5 文件和 URL API 正确创建和提供 PDF Blob

    好吧 假设我有文档数据存储在某处 让我们任意取this pdf http www grida no climate ipcc tar wg1 pdf tar 01 pdf 问题 1 我想要做的是对此 URL 进行 AJAX 调用 因为我需要
  • 在php中对带有特殊字符的多维数组进行排序

    我有一个多维数组 我按字母顺序排序 但问题是 带有丹麦语特殊字符 它们应该按该顺序排序 但不会按该顺序返回 这是我的数组 部分已删除 Array 0 gt Array Name gt John 1 gt Array Name gt Pate
  • 一个 Next.js 路由中的两个不同子域

    我想使用构建一个新平台Next js https nextjs org React js https reactjs org and 反应路由器 https reacttraining com react router web guides
  • React:React 如何确保在浏览器有机会绘制之后调用 useEffect?

    useLayoutEffect 的文档说 useLayoutEffect 内计划的更新将被刷新 在浏览器有机会绘制之前同步进行 useEffect 的文档说 与 componentDidMount 和 componentDidUpdate
  • 带有嵌入式 Ruby 的 Javascript:如何安全地将 ruby​​ 值分配给 javascript 变量

    我在页面的 javascript 块中有这一行 res foo 处理这种情况的最佳方法是什么 ruby var里面有单引号吗 否则会破坏 JavaScript 代码 我想我会用红宝石JSON http json org ruby var 上
  • Angular-Datatables + Angular-xeditable:取消可编辑行

    当组合 Angular DataTables 和 Angular XEditable 时 添加新行时会取消可编辑行 这是jsfiddle https jsfiddle net faj61h5d 10 示例操作如下 1 这是初始状态 2 将第
  • t /= d 是什么意思? Python 和错误

    t current time b begInnIng value c change In value d duration def easeOutQuad swing function x t b c d alert jQuery easi
  • Relay 中的嵌套片段数据始终相同

    我是 Relay 新手 并且遇到了片段上嵌套数据的问题 当我在 graphiql 中进行测试时 以下查询返回正确的数据 因此我确信我的架构是正确的 viewer customers name billing address city 但是
  • Unix 排序实用程序:使用十六进制字节值作为分隔符

    我想知道是否可以使用十六进制值作为 Unix 的分隔符sort公用事业 基本上我想做一些类似的事情 sort t x00
  • 正则表达式 - 避免表达式中出现字符串

    我正在尝试创建一个应该匹配以下情况的正则表达式 如果单词完全匹配 first second third 那么匹配应该失败 但如果它周围有任何字符 那么应该匹配该字符串 我还需要避免字符串中的某些字符集 如果这些字符是字符串的一部分 则匹配结
  • django ajax post 403被禁止

    使用 django 1 4 当我尝试从我的 javascript 做我的 django 服务器上的帖子时 我收到 403 错误 我的 get 工作正常 尽管问题仅出在帖子上 也尝试过 csrf exempt但没有运气 更新 我现在可以发布我
  • CryptoJS 和 Pycrypto 一起工作

    我正在使用 CryptoJS v 2 3 加密 Web 应用程序中的字符串 并且需要在服务器上使用 Python 对其进行解密 因此我使用 PyCrypto 我觉得我错过了一些东西 因为我无法让它工作 这是JS Crypto AES enc
  • 优化正则表达式以过滤数千个 HTML 选择选项

    背景 我开发了一个基于 jQuery 的穿梭小部件 https stackoverflow com a 13557000 59087对于 HTMLselect元素 因为我找不到一个经过最低限度编码并提供正则表达式过滤器来补偿的元素变音符号
  • 在 d3.js 中换行长文本

    我想将长文本元素换行为宽度 这里的例子取自博斯托克的wrap功能 http bl ocks org mbostock 7555321 但似乎有两个问题 首先 wrap的结果没有继承元素的x值 文本左移 其次它绕在同一条线上 并且lineHe
  • Javascript - 如何计算数字的平方?

    使用 JavaScript 函数 function squareIt number return number number 当给定数字 4294967296 时 函数返回 18446744073709552000 每个人都知道真正的答案是
  • 响应式菜单:悬停子菜单显示错误

    简而言之 我根据教程创建了一个响应式菜单 当您将鼠标悬停在投资组合按钮上时 菜单应该显示子菜单 而在移动模式下 您需要按该按钮才能显示子菜单 效果很好 问题是该教程有一个错误 如果您在桌面模式下按组合按钮 子菜单将不会再次显示 除非您按 单
  • 如何在 jQuery 中检查复选框是否被选中?

    我需要检查checked复选框的属性 并使用 jQuery 根据选中的属性执行操作 例如 如果age复选框被选中 然后我需要显示一个文本框来输入age 否则隐藏文本框 但下面的代码返回false默认情况下 if isAgeSelected
  • jQuery fadeOut 一个 div,fadeIn 另一个 div 在其位置

    我正在尝试一个简单的 jQuery 脚本来淡出一个 div 并淡入另一个 div 但由于某种原因 第一个 div 永远不会淡出 这可能是代码的一个明显问题 但我似乎无法弄清楚 div div div div
  • 我可以防止将 Leaflet 地图平移到世界边缘之外吗?

    有没有办法限制平移到世界边缘之外 在这幅画中 棕色是世界 灰色是虚空 我想让它不可能像这样平移 Leaflet 允许您控制地图抵抗被拖出边界的程度maxBoundsViscosity选项 值 0 到 1 将其设置为最大值会完全禁用拖动出界

随机推荐

  • 控制 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