调整小倍数迷你图

2024-04-26

我有一个热图,显示一些数据和热图每行的迷你图。 如果用户单击行标签,则数据按降序排列,因此每个矩形都会放置在正确的位置。 反之亦然,如果用户单击列标签。

每个反应都以正确的方式放置,但我无法放置迷你图。

这是代码 http://plnkr.co/edit/jJSFIXX8WqXZV3CXvY8T.

当用户单击行标签时,包含迷你图的 svg 内的路径也应更新。 然后,当用户单击列标签时,svg包含迷你图的内容应放置在正确的行中。

为了将 svg 放在正确的位置,我尝试使用x and y的属性svg。它们已更新,但 svg 不会改变其位置。为什么? 这是一段与此相关的代码:

var t = svg.transition().duration(1000);
var values = []; 
var sorted;
sorted = d3.range(numRegions).sort(function(a, b) {
    if(sortOrder) {
        return values[b] - values[a];
    } 
    else {
        return values[a] - values[b];
    }
});

t.selectAll('.rowLabel')
    .attr('y', function(d, k) {
        return sorted.indexOf(k) * cellSize;
    });

另外,我不知道如何改变每个迷你图的路径svg。我可以获取数据并手动排序,但这仅适用于用户单击的行,而不适用于所有其他行。

我能怎么做?


这些迷你图的垂直和水平重新定位/重绘需要不同的方法:

垂直调整

对于这个解决方案我正在使用selection.sort, which:

返回一个新选择,其中包含根据比较函数排序的该选择中每个组的副本。排序后,重新插入元素以匹配结果顺序。

所以,首先,我们设置我们的选择:

var sortedSVG = d3.selectAll(".data-svg")

然后,自从selection.sort处理数据,我们绑定数据,这是关于你的SVG的索引sorted array:

.datum(function(d){
    return sorted.indexOf(+this.dataset.r)
})

最后,我们按升序比较:

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

请记住,变化是立即的,而不是缓慢而美好的过渡。这是因为元素在 DOM 中被重新定位,并且新的结构会立即绘制。为了实现缓慢的过渡,您必须处理容器 div 内的 HTML 和 CSS(这可能值得提出一个新的具体问题)。

水平调整

这里的问题是从选择中获取所有相关数据:

var sel = d3.selectAll('rect[data-r=\'' + k + '\']')
    .each(function() {
        arr.push({value:+d3.select(this).attr('data-value'),
            pos: +d3.select(this).attr('data-c')});
    });

并根据它进行排序data-c。之后,我们将结果映射到一个简单的数组:

var result = arr.sort(function(a,b){
        return sorted.indexOf(a.pos) - sorted.indexOf(b.pos)
    }).map(function(d){
        return d.value
    });

结论

这是更新后的 Plunker:http://next.plnkr.co/edit/85fIXWxmX0l42cHx http://next.plnkr.co/edit/85fIXWxmX0l42cHx or http://plnkr.co/edit/85fIXWxmX0l42cHx http://plnkr.co/edit/85fIXWxmX0l42cHx

PS:您还需要重新定位圆圈。

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

调整小倍数迷你图 的相关文章

  • 如何同时使用 2 个范围滑块?

    我想使用 2 个范围滑块同时根据年龄和身高过滤表中的数据 我已经使用以下方法实现了 2 个范围滑块 年龄和身高 d3 slider js https github com MasterMaps d3 slider and a dc data
  • D3可折叠树不同节点颜色

    我在 d3 js 中有一个可折叠的树 我的目标是通过 类型 属性为节点着色 例如 类型 str 的节点应填充为红色 而类型 elem 的节点应填充为绿色 我就是无法让它发挥作用 有人能帮助我吗 这是我的代码
  • 使用d3.js实现元素的过渡效果

    我正在将一个元素从一个点移动到另一个点 但具体来说我想实现这个动画 http carto net svg samples path animation svg http carto net svg samples path animatio
  • 从 csv 更新数据时,d3 在 setInterval 上闪烁文本

    我是 d3 的新人 学习了很多东西 我在更新从 csv 文件获取的数据时遇到了一些问题 我使用 setInterval 每秒更新数据 当它删除并再次插入数据时 它会闪烁几毫秒 表消失并生成新表 我究竟做错了什么 我怎样才能消除闪烁 感谢您的
  • SVG 路径超出 d3 画笔上的图表区域

    当我尝试刷动和缩放折线图的一部分时 所选区域的某些部分会呈现在图表之外 代码和行为再现可以在以下位置找到这个jsbin https jsbin com jamojonaqu edit js output 单击并拖动以选择一部分并放大 双击以
  • 在三角形内强制图表 d3.js

    我正在研究 d3 js 力图 我有一个问题 是否可以在具有某些坐标的三角形内制作力图 这是我的代码 var width 500 var height 500 margin var marginLeft 10 var marginTop 10
  • 更改一个 y 轴的范围 nvd3/d3

    我目前正在使用 multiChart 模型 并且有两个不同的 y 轴 我想更改两个轴 使它们从 0 开始 因为目前它们从最小的 y 数据点开始 我尝试过执行以下操作 chart yAxis1 tickFormat d3 format f d
  • 如何使用 jQuery 循环 JSON 文件

    我正在尝试循环下面的 JSON 文件 statements subject A predicate B object C subject D predicate E object F 正如您所看到的 有两个主语 两个谓语和两个宾语 例如 我
  • 谷歌可视化将 0 轴与两个不同的 y 轴对齐

    我正在创建一个组合图 https developers google com chart interactive docs gallery combochart与谷歌的可视化库 我正在绘制商店一天内的客流量和收入图表 我已将抽奖选项设置为
  • 选择 G 元素内的路径并更改样式

    本质上 我试图让除悬停的路径之外的所有路径都变成灰色 而选择的路径则保持其原始颜色 我已经能够将所有其他路径变成灰色 但是我在使用 select this 函数并实际访问我想要更改样式的路径时遇到了问题 看来我实际上已经成功地找到了 g 组
  • 当节点扩展时增加d3中的连接链路长度

    我正在 d3 中研究可折叠力布局 我面临的问题是 当单击节点时 我需要增加节点之间链接的长度 以保持子节点之间的链接距离相同 当分析扩展时 如何增加分析和耀斑之间的距离 保持与子级的距离较小 是的 您可以通过定义一个函数来做到这一点力 链接
  • d3.js:在树布局中展开多个路径

    My JSON contains same node names in different paths I would like to be able to open all children with the same name or h
  • 使用 d3 在两个节点之间绘制多条边

    我一直在关注 Mike Bostock 的代码这个例子 http bl ocks org 1153292学习如何在 d3 中绘制有向图 并且想知道如何构建代码 以便可以在图中的两个节点之间添加多个边 例如 如果上例中的数据集定义为 var
  • d3 (v4) 树布局和打字稿:类型“HierarchyNode”上不存在属性“x”

    我正在尝试在使用时使用正确的 ts 类型d3 hierarchy具有树布局的根 例如 interface MyCustomGraphType id string children MyCustomGraphType let treeData
  • 箱线图与箱线图有何不同?

    我想知道当我们在海生图书馆中有箱线图时为什么会有箱线图 我知道一件事是箱线图优化了表示数据的方式 特别是对于大型数据集 但我不知道为什么 除此之外 我没有任何充分的理由使用箱线图 箱线图将中位数显示为中心线 第 50 个百分位数 然后将第
  • D3:使用 d3-tile 缩放到边界框

    我已成功将 D3 矢量 地图分层到从 Mapbox 提取图块的 d3 tile 光栅 地图之上 手动缩放效果非常好 矢量和光栅都是同步的 我现在正在尝试实施迈克 博斯托克 缩放到边界框 https bl ocks org mbostock
  • 我可以补间 D3 弧的结束角度,但不能补间起始角度。我究竟做错了什么?

    我只是在玩这个演示并自己重新创建它 http bl ocks org mbostock 5100636 http bl ocks org mbostock 5100636 我可以定义一个新的 endAngle 并且它会很好地制作动画 但现在
  • NVD3/D3改变y轴最小值

    我目前正在使用 NVD3 制作一些折线图 我想知道是否可以使 y 轴刻度始终从 0 开始 目前它始终从最低的 y 值开始 我尝试过使用tickValues 但我不想更改其他值 我还尝试添加值为 0 的数据点 但这似乎是一种解决方法 它会影响
  • 如何使用 D3 (或只是 javascript)将表单选项设置为“选择”

    有没有一种方法可以搜索选择表单元素中的所有选项 并将具有匹配值的选项指定为 已选择 var xStat G var statOptions Points PTS Goals G Assists A Penalty Minutes PIM c
  • 如何使用 grid.arrange 移动图例位置

    我试图在一页中排列 4 个图 将图例放在底部中心 我用它来获取其中一个图的图例 因为它们对于四个图来说是相同的 get legend lt function myggplot tmp lt ggplot gtable ggplot buil

随机推荐

  • 如何有效地读取屏幕上的数字(pytesseract)?

    我正在尝试读取屏幕上的数字 为此我正在使用 pytesseract 问题是 尽管它有效 但它的作用很慢 而且根本不会产生好的结果 例如 对于这张图片 我可以制作这个阈值图像 它读取的是 5852 而不是 585 这是可以理解的 但有时使用不
  • 解决 Django 的 make_aware 中的 AmbigouslyTimeError

    我有一个代码如下 from django utils timezone import get current timezone make aware make aware some datetime get current timezone
  • 我不明白这个 fork() 的例子

    我有这个代码示例 但我不明白为什么这段代码会创建 5 个进程加上原来的进程 总共6个过程 include
  • Rails Routes - 限制资源的可用格式

    我有一系列资源 我只想通过 JS 格式访问这些资源 Rails 的路线资源为我提供了格式和标准 HTML 有没有办法指定只创建JS格式的路由 您必须将这些路由包装在一个范围内 不幸的是 在这种情况下 约束不能按预期工作 这是此类块的一个示例
  • IntelliJ + Groovy + Spock:没有为模块定义 Groovy 库

    我一直在尝试在 IntelliJ IDEA 中创建一个带有 Spock 测试的 Groovy 项目 以下是我遵循的步骤 创建 Groovy 项目并添加 Maven 支持 添加了 Spock 依赖项和插件 我使用的 POM 与此非常相似 ht
  • Android 底部导航栏重叠 Spinner。设置微调器下拉高度/边距

    我在处理 Android Honeycomb 项目时偶然发现了一个有趣的问题 如下图所示 在对话框中展开微调器时 底部的导航栏会与其重叠 因此 无法选择底部的元素 为了解决这个问题我尝试使用android fitsSystemWindows
  • NSLog 编码错误

    我的以下代码有问题 NSString strValue 你好 char temp 200 strcpy temp strValue UTF8String printf s temp NSLog s temp 代码第一行有两个汉字被双引号括起
  • 以编程方式将 TortoiseSVN 与 C# 或其相关进程结合使用来检查存储库是否是最新的

    有没有办法以编程方式将 TortoiseSVN 与 C 或其相关进程一起使用来检查存储库是否是最新的 我可以使用 System Diagnostics Process 但我不想显示任何 GUI 内容 我没有SVN 它是开源的 所以我可以浏览
  • Visual Basic 6.0 中的无效限定符错误

    在 Visual Basic 6 0 程序中 我有一个字符串 sTemp 我想确保它不包含引号 我有这行 If sTemp Contains Then 但是当我在 sTemp 之后输入句点时 我没有从智能感知中得到任何信息 并且当我尝试编译
  • 对话流 v2 api 中的 app.setContext() ?

    v2 API 中 v1 中的对话流 app setContext 的等效项是什么 考虑到迁移指南概述的设置 如下 例如 当下面的演示代码中触发欢迎意图时 您会进行什么调用来设置上下文 v2 const functions require f
  • git:更改旧的提交消息而不产生冲突

    我想使用以下命令更改一个相当旧的提交消息 git rebase i sha1 of commit 这很好 我愿意git commit amend并编辑消息 但是当我这样做时事情会变得很糟糕 git rebase continue 我遇到了多
  • 如何创建一个 Java 应用程序来读取 twitter feed?

    我想创建一个小型应用程序 仅使用应用程序级身份验证来访问 twitter api 来读取提要 我在网上阅读了很多文档 感到非常困惑 我了解 twitter api 需要 OAth 来授权任何应用程序从 twitter 获取或写入数据 为了获
  • 错误:没有这样的文件或目录 - C

    解读完这个之后comment https stackoverflow com questions 41281332 code directory structure library design comment69813504 412816
  • TypeScript 将通用对象从蛇形命名法转换为驼峰命名法

    我想编写一个函数 它接受带有蛇形键的对象并将其转换为带有驼峰式键的对象 假设我们知道输入对象的类型 但希望解决方案是通用的 那么在 TypeScript 中输入此类函数的最佳方式是什么 type InputType snake case k
  • 如何导航到托管 bean 中的另一个页面?

    我正在尝试使用命令按钮转发托管 bean 中的页面
  • 如何使用 AWS CLI 列出用户及其权限?

    我运行这个命令 aws iam list users 我得到了用户列表 但没有列出权限 意味着如果某人是 root 或 s3fullaccess 等 我运行另一个命令 aws iam list user policies user name
  • Powershell Invoke-RestMethod 字符不正确

    我正在使用 Invoke RestMethod 从我正在使用的应用程序中获取页面名称 我注意到 当我在页面上执行 GET 操作时 它会返回页面名称 如下所示 该页面正在运行 然而实际的页面名称是 此页面 正在运行 这是我的请求的样子 Inv
  • 查找并删除 csproj 文件中的重复条目

    我们最近合并了两个代码分支 最终在 csproj 文件中的几个文件中出现了重复的条目 这似乎发生在所有需要 复制到输出目录 的文件上 在进行更改并与其他分支合并后 将其更改为 始终复制 我想知道如果这样下去是否会导致任何意想不到的问题以及我
  • 无法签出远程 git 分支

    我在 github 本地克隆中 以下是分行列表 git branch a master online demo remotes origin HEAD gt origin master remotes origin develop remo
  • 调整小倍数迷你图

    我有一个热图 显示一些数据和热图每行的迷你图 如果用户单击行标签 则数据按降序排列 因此每个矩形都会放置在正确的位置 反之亦然 如果用户单击列标签 每个反应都以正确的方式放置 但我无法放置迷你图 这是代码 http plnkr co edi