d3.js 右对齐嵌套条形图

2024-02-08

我正在与这个 d3.js 示例 http://bl.ocks.org/mbostock/1283663我希望将图表的整个方向更改为从右到左。

我能够反转 x 轴刻度:

var x = d3.scale.linear().range([width, 0]);

以及 y 轴的位置:

svg.append("g").attr("class", "y axis")
               .attr("transform", "translate("+width+", 0)")
               .append("line").attr("y1", "100%");

我相信我必须将每个条形上的变换设置为图表宽度 - 条形宽度,但是将任何变换应用于包含g没有影响。

 function bar(d) {
    var bar = svg.insert("g", ".y.axis")
                 .attr("class", "enter")
                 .attr("transform", "translate(0,5)")
                 .selectAll("g")
                 .data(d.children)
                 .enter().append("g");
  //DOESNT WORK
  bar.attr("transform", function(n){ return "translate("+ (width - x(n.value)) +", 0)"; })  
     .style("cursor", function(d) { return !d.children ? null : "pointer"; })
     .on("click", down);

  bar.append("text")....

  bar.append("rect")....

  return bar;
} 

没有设置转换bar即使我只是用固定值进行测试,结果页面中的结果也是translate(0,0)。

为什么这里没有应用变换,这是否是使条形图右对齐的正确方法?我还需要文本位于栏的右侧而不是左侧,并且似乎更改附加顺序在这方面没有任何区别。


这个特定示例的问题在于代码有点令人困惑——rect元素设置在各种不明显的地方。特别是,您设置的转换会立即被其他代码覆盖。

我已经修改了示例来执行您想要的操作here http://bl.ocks.org/larskotthoff/9173284。关键点是我正在移动g包含右侧所有条形的元素

var bar = svg.insert("g", ".y.axis")
  .attr("class", "enter")
  .attr("transform", "translate("+width+",5)")
.selectAll("g")
// etc

并设置x的位置rect元素为其负宽度

bar.append("rect")
  .attr("x", function(d) { return width-x(d.value); })
  .attr("width", function(d) { return x(d.value); })
  .attr("height", barHeight);

The x需要以这种方式在代码中的其他一些位置设置位置 - 几乎肯定有更优雅的方法可以做到这一点。

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

d3.js 右对齐嵌套条形图 的相关文章

随机推荐

  • 重叠指针、类型的限制限定符的粒度

    The 整点 of restrict是承诺通过一个指针的访问不会别名另一个 也就是说 有些例子中重叠的内存地址并不意味着别名 例如 int arr ptr0 arr 0 int arr ptr1 arr 1 for int i 0 i lt
  • 如何显示当前工作目录和上次提交的差异?

    我正在使用 git 并需要包含在差异结果未跟踪文件中 那么我必须执行什么命令才能获取当前工作目录和 HEAD 之间的所有差异 甚至部分差异存在于新文件添加中 Um git diff 毕竟 这就是它的作用 Update 不在暂存区域中的文件
  • 将 HTML 内容渲染到 Google 电子表格

    我的单元格 A1 中有一个 HTML 内容 我想渲染该 HTML 内容并将渲染的 HTML 内容添加到单元格 B1 中 例如如果我在 A1 中有这个 HTML
  • 反应上下文不更新

    我已经设置了一个使用 Context 来存储页面标题的基本示例项目 但是当我设置它时 组件不会重新呈现 主要文件 上下文 js import React from react const Context React createContex
  • React 上下文消费者如何访问消费组件的引用

    我使用以下方法构建了一个高阶组件React 的新上下文 API https reactjs org docs context html我正在尝试找到一种能够访问参考的方法 通过ref 包装的子组件 tl dr 本质上我想要转发裁判 http
  • Backbone.js 链接文件到模型

    我正在使用 django 和backbone js 创建一个Web 应用程序 问题是我需要将文件上传到服务器 如何将主干模型与文件链接 因此 当我执行 model save 时 文件会上传到服务器 编辑 只是为了让事情变得清楚 我想做的是将
  • 在 Flutter 中使用 JsonSerialized 时如何识别动态键?

    让我们假设 直到最近 我才听到下面的声音Json response AA product id 111 type C 而且 我写了下面的内容 model dart从 json 转换为对象 模型 dart JsonSerializable c
  • 从 Groovy 中的闭包修改脚本变量

    我正在尝试从函数的闭包内部修改脚本变量 这个问题可以归结为 groovy transform Field int myField 0 incrementField assert myField 1 def incrementField 1
  • 调试断言失败 c >= -1 && c <= 255

    我很难理解我的代码的运行时错误 这是我的班级作业 我认为很容易 但发生了一些奇怪的事情 我在下面发布了我的代码 这个作业的提示是创建一个程序 要求用户输入一些单词 然后它应该输出有多少个单词 我有一个朋友运行了该程序并且它有效 但是 每当我
  • 使用 Karma Runner 生成 jasmine 报告

    我想获得所有成功的茉莉花规格与业力运行的报告 就像您单独使用茉莉花时获得的那样 有办法实现这个目标吗 试试我写的这个快速插件 https github com dtabuenc karma html reporter https githu
  • jQuery 父元素内部 HTML

    我通过以下方式获取元素的内部 HTML this context innerHTML 然后我得到父内部 HTML this parent context innerHTML 但这段代码返回相同的值 任何想法有什么问题吗 要获取元素的内容 则
  • CMake 顶级 Xcode 项目属性

    我使用 Cmake 和 Xcode 来生成一个 c c 项目 my project 和一些 c c 目标 一个是二进制文件 其余的是库 我的 CMakeLists txt 看起来像这样 project my project add subd
  • 在多个列表段落上循环 Word 宏会导致内存问题

    我遇到了一个相当简单的 Microsoft Word vba 宏问题 该宏旨在解决当我们从 Word 文档创建 PDF 版本时我们在列表缩进中遇到的一些问题 该宏基本上循环遍历文档中的每个列表 并且对于与列表关联的每个列表段落 它设置列表模
  • 页面必须填满整个ViewPager2(使用match_parent)

    我有一个项目布局 其中显示图像 产品名称和产品图像 我必须使用约束布局以 1 1 5 比例显示图像 但是当我加载小图像时 下面的文本不显示 下面是我的项目 XML 代码
  • 将图像拖放到网页中并使用 HTML 文件 API 自动调整图像大小

    我想创建网页 允许用户将图像拖放到页面各个部分的框中 以便他们可以打印带有图像的页面 我希望图像在放入框中时自动调整大小 我结合了一些代码http html5demos com file api http html5demos com fi
  • Git Bash for Windows 显示/期望带有正斜杠的文件路径,没有驱动器冒号

    我安装了 Git 扩展 它会自动下载并安装适用于 Windows 的 Git 当我使用 Git Bash 时 它显示文件路径为 c whatever folder 而不是 C whatever folder 如果我粘贴来自 Windows
  • 如何将 rst.FindFirst 与 rst.NoMatch 一起使用?

    我的代码除了这一行之外都有效 FindFirst DONOR CONTACT ID strTemp2 我希望我的代码检查是否存在一条记录 其中存在特定的 DONOR CONTACT ID 因为存在多个具有相同 DONOR CONTACT I
  • 性能问题:ON DUPLICATE KEY UPDATE 与 UPDATE (MySQL)

    INSERT INTO ON DUPLICATE KEY UPDATE 和 UPDATE 之间有性能差异吗 如果我知道可以更新的值 我应该使用更新还是它并不重要 它们是有区别的 The INSERT查询必须检查每一列的约束 以查看添加该行是
  • 将字符串转换为json字符串并在R中解析

    我有一个数据 其中一列为 json 字符串 reservation reasons 1592 name gt jorge value gt MX name gt Billing phone number value gt 1123 name
  • d3.js 右对齐嵌套条形图

    我正在与这个 d3 js 示例 http bl ocks org mbostock 1283663我希望将图表的整个方向更改为从右到左 我能够反转 x 轴刻度 var x d3 scale linear range width 0 以及 y