为什么域不在 D3 中使用 d3.max(data) ?

2024-02-06

我是 D3 新手,正在尝试使用散点图。我无法让 d3.max(data) 在设置域时正常工作!

我有以下设置随机数据集:

var data = [];
      for (i=0; i < 40; i++){
            data.push({"x": i/40, "y": i/8, "a": Math.floor(Math.random() * 3), "x2": Math.random()});
        }

然后执行以下操作来设置我的坐标:

 var x = d3.scale.linear().domain([0, 1]).range([0 + margin, w-margin]),
            y = d3.scale.linear().domain([0, d3.max(data)]).range([0 + margin, h-margin]),
            c = d3.scale.linear().domain([0, 3]).range(["hsl(100,50%,50%)", "rgb(350, 50%, 50%)"]).interpolate(d3.interpolateHsl);

这会将所有 40 个点放在一条水平线上。如果我将 d3.max(data) 替换为“5”,那么它就是一条对角线(尽管从左上角到右下角,我仍然在努力翻转 y 坐标)。为什么 d3.max(data) 没有按预期工作?


d3.max()需要一个数字数组,而不是对象数组。的要素data有一个内部键值结构,并且没有办法d3.max()知道什么是最大的。你可以使用类似的东西jQuery 的$.map http://api.jquery.com/jQuery.map/获取所需对象的元素,然后取最大值,例如

var maxy = d3.max($.map(data, function(d) { return d.y; }));

Edit:

正如下面的评论所指出的,您甚至不需要 JQuery,因为.map()是一个原生数组方法。那么代码就变得简单了

var maxy = d3.max(data.map(function(d) { return d.y; }));

甚至更简单(对于那些没有实现Array.map()),使用可选的第二个参数d3.max告诉它如何访问数组中的值

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

为什么域不在 D3 中使用 d3.max(data) ? 的相关文章

  • 如何精确缩放已翻译的d3地图

    我有一张已翻译的地图 以使其正确适合画布 我正在尝试实现一种缩放它的方法 它确实有效 但是当您放大时它会远离中心 而不是以鼠标甚至画布为中心 这是我的代码 function map data total views var xy d3 ge
  • 快速响应的交互式图表/图形:SVG、Canvas 还是其他?

    我正在尝试选择正确的技术来更新一个项目 该项目基本上在可缩放 可平移的图表中渲染数千个点 当前使用 Protovis 的实现性能不佳 在这里查看 http www planethunters org classify http www pl
  • d3js 折线图——如何将最后一步延伸到范围末尾?

    很简单 但我无法摆脱这个问题 线是两点 值 之间的链接 从值 A 绘制到值 B 因此 假设 A 的值为 10 B 的值为 20 而 C 缺失 现在从 0 到 10 到 20 的线已经绘制完毕 我想画从 0 到 10 到 20 到 25 的线
  • 表格中与文本一起内嵌 D3 迷你图

    假设有一个这样的表 var data Orange Orange 6 3 3 2 5 Apple Red 6 2 6 5 5 Grape Purple 9 1 2 3 1 我希望将字符串表示为字符串 但将数字数组表示为 D3 折线图 如果这
  • d3 序数尺度的映射

    我正在使用 D3 的序数比例将数字映射到颜色 我用过这个 color d3 scale ordinal range 1f77b4 ff7f0e 2ca02c d62728 9467bd 8c564b e377c2 domain 0 6 co
  • 动画 D3 地球仪 (d3.geo.azimuthal)

    我对 d3 javascript 库有疑问 我想使用方位角 http mbostock github com d3 talk 20111018 azimuthal html地球 我想从地球上的经度和纬度坐标插入点 并使地球动画化 而无需使用
  • 创建链接到 csv 文件的表

    我正在尝试创建一个链接到的表 csv使用 d3 文件 但我得到的只是一个空白网页 即使以克里米亚为例 我也得到一张空白页 我将很高兴得到指导或展示一个可行的例子或关于我做错了什么的建议 如果您询问如何从 CSV 数据创建 HTML 表 这就
  • 设置 D3 力定向图

    致尊敬的读者 我对 javascript 相当陌生 我也遇到过这个问题 我正在尝试实现这个力导向图的修改版本 http mbostock github com d3 ex force html http mbostock github co
  • D3js:如何设计地形图?

    给定具有高程数据的 GIS 栅格 如何在D3js中设计地形图 有没有使用 D3js 制作的耕地地形图 地形图的示例 不工作 我探索了以下可能性 tif gt gdal contour py gt shp gt topojson gt d3j
  • 如何在 d3.js 中的节点上制作双击事件?

    我想在节点上进行双击事件 所以我尝试了 on dbclick function d return http google com and bind dbclick function d alert hello 但一切都失败了 谁能帮我 完整
  • 请建议 D3.js 进行 CSV 数据导入

    我正在尝试使用 D3 js 导入 CSV 数据 var englishArray d3 csv data csv function d return d value function error data var englishArray
  • 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 我不知道在哪里添加 到第一种情况 或者在第二种
  • 如何使用 d3.js 沿 GeoJSON 路径对对象进行动画处理?

    我正在使用 D3 js 从 GeoJSON 文件生成并渲染路径 效果很好 但现在我想沿着该路径为对象设置动画 我知道如何使用 D3 和标准 SVG 来做到这一点 创建过渡并设置其持续时间 对于过渡的每一帧 使用 Complete 查找沿路径
  • d3.js - .exit().remove() 组元素不起作用

    我正在构建一个动态条形图 查看肯尼亚和坦桑尼亚男孩和女孩的考试成绩 用户可以从下拉菜单中选择他们想要查看哪个国家 肯尼亚 坦桑尼亚 和哪一年 2010 年 2011 年 的分数 我已清理所有数据并将其组织到单独的国家 地区年份 csv 文件
  • D3:在一个文件夹中加载多个csv数据文件

    我正在使用 d3 创建可视化 我的数据由同一文件夹中的 80 多个 CSV 文件组成 所以我想知道是否有一种简单的方法可以加载所有这些 我在想也许检查文件夹中有多少文件 然后递归加载它们 不过D3好像不行 任何建议 将不胜感激 谢谢 当你想
  • 如何在 React 组件中使用 CDN

    我正在尝试使用基于 D3 构建的库 称为 Greuler 来动态渲染图形 它的 npm 包似乎已损坏 当我改用 Greuler CDN 时 index html 中的测试图终于起作用了 但是 我正在开发一个 React 应用程序 并且我希望
  • 尝试将 SVG 绘制到画布上,为什么我的 SVG XML 被截断?

    我真正想做的就是将我喜欢的动态创建的 SVG 放入 PDF 中 目前通过 jsPDF 添加 SVG 不起作用 因此我尝试将它们转换为 PNG 以便尝试添加图像 这是 IE11 中的情况 客户端要求 如果我做 var lsvg d3 sele
  • 具有负值的条形图

    我需要创建一个可以有负值的 d3 条形图 理想情况下 零轴位置应根据数据的范围来计算 但我会选择一个假设对称正负范围的解决方案 即它始终位于图表的中间 这是我想要实现的目标的示例 好吧 假设您有一个数字数组作为数据集 其中包括一些正值和负值
  • 是否可以将 SVG 对象的自定义属性设置为数字而不是字符串?

    我正在为 SVG G 元素 SVG 组对象 分配人工属性 我通过 SVG 转换移动该组及其内容 并将该组的 x y 坐标及其宽度 高度存储在这些属性中 我正在使用 D3 Javascript 库和调用 embeddedElemContain
  • 同心放射圆 d3

    我有一个等距值的数组 我用它来绘制同心圆 我想使用一种散发效果 本质上是 一旦最外面的圆的值超过最大值 就将其删除 并在中心添加一个新的圆来补偿 我不确定如何操作数据集来删除和添加新圆圈

随机推荐