使用 D3.js 在矩形上显示文本

2024-03-06

I am developing Normalized stacked bar chart using d3.js,and trying to append a text on rect.It is getting appended when i inspect in browser.But it is not visible.I want something like this,enter image description here

这是我的代码,

var margin = {top: 20, right: 100, bottom: 30, left: 40},
    width = 400 - margin.left - margin.right,
    height = 200 - margin.top - margin.bottom;

var x = d3.scale.ordinal()
    .rangeRoundBands([0, width], .11);

var y = d3.scale.linear()
    .rangeRound([height, 0]);

var color = d3.scale.ordinal()
    .range(["#404041", "#00adef", "#bbbdc0", "#d1d2d4", "#d3d3d3"]);

var xAxis = d3.svg.axis()
    .scale(x)
    .orient("bottom");

var yAxis = d3.svg.axis()
    .scale(y)
    .orient("left")
    .tickFormat(d3.format("10"));

var svg = d3.select("body").append("svg")
    .attr("width", width + margin.left + margin.right)
    .attr("height", height + margin.top + margin.bottom + 20)
    .append("g")
    .attr("transform", "translate(" + margin.left + "," + margin.top + ")");

d3.json("Nstackedbardata.json", function(error, data) {
  color.domain(d3.keys(data[0]).filter(function(key) { return key !== "State"; }));

  data.forEach(function(d) {
    var y0 = 0;
    d.ages = color.domain().map(function(name) {return {name: name, y0: y0, y1: y0 += +d[name]}; });
    d.ages.forEach(function(d) { d.y0 /= y0; d.y1 /= y0; });
  });

  data.sort(function(a, b) { return b.ages[0].y1 - a.ages[0].y1; });

  x.domain(data.map(function(d) { return d.State; }));


  svg.append("g")
      .attr("class", "x axis")
      .attr("transform", "translate(0," + height + ")")
      .call(xAxis)
      .style("fill", "#bbbdc0")
      .append("text")
      .attr("class","barChartAxisValue");
    var insertLinebreaks = function (d) {
        var el = d3.select(this);
        var words = d.split(' ');
        el.text('');

        for (var i = 0; i < words.length; i++) {
            var tspan = el.append('tspan').text(words[i]);
            if (i > 0)
                tspan.attr('x', 0).attr('dy', '12');
        }
    };
    svg.selectAll('g.x.axis g text').each(insertLinebreaks);
  svg.append("g")
      .attr("class", "y axis")
      .call(yAxis)
      .style("fill", "#bbbdc0")
      .append("text")
      .attr("class","barChartAxisValue")
      .attr("transform", "rotate(-90)")
      .attr("x",-70)
      .attr("y", -15)
      .attr("dy", ".71em")
      .style("text-anchor", "middle")
      .text("Percentage");

  var state = svg.selectAll(".state")
      .data(data)
    .enter().append("g")
      .attr("class", "state")
      .attr("transform", function(d) { return "translate(" + x(d.State) + ",0)"; });


  var sandeep= state.selectAll("rect")
      .data(function(d) { return d.ages; })
      .enter().append("rect")
      .attr("width", x.rangeBand())
      .attr("y", function(d) { return y(d.y1); })
      .attr("height", function(d) { return y(d.y0) - y(d.y1); })
      .style("fill", function(d) { return color(d.name);})
      .append("text")
      .attr("fill","#fff")
       .style("stroke-width", 1)
      .style({"font-size":"18px","z-index":"999999999"})
      .style("text-anchor", "middle")
      .text(function(d) { return ((d.y1-d.y0)*100).toFixed(0);});


});

您无法追加text元素到rect元素。

相反,您应该将它们作为父母的单独孩子g:

  var sandeep= state.selectAll(".data")
      .data(function(d) { return d.ages; })
      .enter();

   sandeep.append("rect")
      .classed('data', true)
      .attr("width", x.rangeBand())
      .attr("y", function(d) { return y(d.y1); })
      .attr("height", function(d) { return y(d.y0) - y(d.y1); })
      .style("fill", function(d) { return color(d.name);});

   sandeep
      .append("text")
      .classed('data', true)
      .attr("y", function(d) { return (y(d.y1) + y(d.y0)) / 2; }) // Center text
      .attr("fill","#fff")
      .style("stroke-width", 1)
      .style({"font-size":"18px","z-index":"999999999"})
      .style("text-anchor", "middle")
      .text(function(d) { return ((d.y1-d.y0)*100).toFixed(0);});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 D3.js 在矩形上显示文本 的相关文章

  • javascript获取上周的第一天和最后一天[重复]

    这个问题在这里已经有答案了 我想用 javascript 获取上周的第一天 星期一 和最后一天 星期日 我已经检查过其他主题 但它不起作用 我还需要处理前一周是否是两个不同的月份 我正在使用此代码 但最后一个星期日是 06 03 2014
  • 如何在移动设备上垂直堆叠 div 而在网页版本上保持水平放置?

    我添加了一些 div 标签以在 WordPress 帖子中创建两列 这是我使用的代码 container width 100 one width 50 float left two width 50 float right 我将上面的代码添
  • IE 9 的子元素不透明,我无法使用 captify 阻止它

    好的 我正在使用一段名为 Captify 的 javascript 它为您的图像添加了一个带有文本的小弹出窗口 适用于所有接受 IE9 的浏览器 IE9 会淡化弹出 div 中的所有内容 我已阅读其子元素问题 但无法修复它 由于在网上任何地
  • JavaScript 中的 Promise.all:如何获取所有 Promise 的解析值?

    我编写了以下node js文件 var csv require csv parser var fs require fs var Promise require bluebird var filename devices csv var d
  • JavaScript 中的常用数字

    在我的任务中 我必须编写一个程序来查找数组中最常见的数字以及它重复的次数 我写了一些东西 但只打印最大重复次数 所以我的问题是如何打印这个元素的值 最大数量 在我的例子中是 4 var array 13 4 1 1 4 2 3 4 4 1
  • 在 AngularJS 中覆盖运行时的依赖关系

    我有一个服务叫 doggedHttp 它公开了与 http 现在我想创建一个 doggedResource服务是有角度的 resource服务之上 doggedHttp代替 http 换句话说我想注入 doggedHttp as the h
  • 嵌套对象的 AJV 模式验证

    函数返回的对象看起来像这样 answer vehicle type 1 message Car model VW color red 答案 对象始终存在 其他字段基于 vehicle type E g 如果vehicle type 1 则有
  • Backbone-relational 无法实例化两个 RelationalModel 对象

    我正在尝试实现 BackboneRelational 并不断获得 无法实例化多个 Backbone RelationalModel 每种类型都有相同的 ID class App Models User extends Backbone Re
  • HTML5 拖放 - 没有透明度?

    当我将一个元素拖放到页面上时 该元素会变成 幻影 基本上它获得了一些透明度值 有什么办法可以做到吗opacity 1 看来是做不到了 拖动的元素被放入具有自己的不透明度 低于 1 的容器中 这意味着虽然您可以降低拖动元素的不透明度 但您无法
  • 将服务连接到现有的流星帐户

    我正在设置一个流星应用程序 其中涉及使用用户名和密码进行注册 然后希望将该帐户与 Facebook 和 Twitter 连接起来 我只需使用帐户包即可轻松启动并运行第一部分 但是当我有一个登录用户调用 Meteor loginWithFac
  • 在 Chrome 中检索浏览器语言

    我一直在尝试让 momentjs 正确检测浏览器语言并本地化时间显示 按照使用 Moment js 进行区域设置检测 https stackoverflow com questions 25725882 locale detection w
  • RxJS - 从可观察对象中获取最后 n 个元素

    我想从可观察对象中获取最后 3 个元素 假设我的时间线是这样的 a b c d e f g h i j gt where a b c d e f g h i j are emitted values 每当发出新值时 我想立即获取它 因此它可
  • R Shiny - 修复了 Shiny 仪表板中的侧边栏和主标题

    我有一个简化的闪亮仪表板 请参阅下面的代码 我想修复侧边栏和主标题 因此 在其他帖子的帮助下 我编写了一个 CSS 文件来解决该问题 sidebar color FFF position fixed width 220px white sp
  • 替换 Javascript 中的引号?

    对于我正在制作的网络应用程序 我将收到文本字符串 其中偶尔包含引号 因为我接下来要 document writing 字符串 所以需要将它们更改为撇号或转义 我该怎么做 因为当我尝试时它似乎不起作用 特别是我认为因为字符串的引号阻止了脚本的
  • 设计 Javascript 前端 <-> C++ 后端通信

    在我最近的将来 我将不得不制作一个具有 C 后端和 Web 前端的系统 要求 目前 我对此了解不多 我认为前端将触发数据传输 而不是后端 所以不需要类似 Comet 的东西 由于在该领域的经验可能很少 我非常感谢您对我所做的设计决策的评论
  • ERR_IMPORT_ASSERTION_TYPE_MISSING 用于导入 json 文件

    这段代码运行良好 我不知道是因为我升级到 Node 17 还是什么原因 但现在我明白了 TypeError ERR IMPORT ASSERTION TYPE MISSING Module file Users xxxxx code pro
  • 将 javascript 变量发送到服务器端 ASP .NET

    我需要在回发时将 JavaScript 数据传递到服务器端 Exvar jsVariableToPass new Object jsVariableToPass key1 value1 jsVariableToPass key2 value
  • 如何在 svelte 中制作搜索过滤器

    我有两个组件在组件树中距离很远 我对如何在两者之间进行通信存有疑问 我有搜索组件 listItems 和商店 商店 svelte
  • 如何制作具有移动外观的 emberjs 应用程序(如 jquery mobile 中的应用程序)?

    我有一个使用 Emberjs 的简单移动 Web 应用程序项目 对于外观和感觉 我想要类似于 JQuery Mobile 的东西 有没有办法混合使用 Emberjs 和 jquery mobile 如果是这样 怎么办 我查看了 Travis
  • 使用 Promise 语法编写同步代码有什么好处吗?

    有同步承诺这样的概念吗 使用 Promise 语法编写同步代码有什么好处吗 try foo bar a b bam catch e handleError e 可以写成类似的东西 但使用同步版本then foo then bar bind

随机推荐

  • R 中存在大循环?

    假设我想使用以下命令执行模拟function fn1 lt function N res lt c for i in 1 N x lt rnorm 2 res lt c res x 2 x 1 res 对于非常大的N 计算似乎挂起 有更好的
  • 如何隐藏表单上的轮廓

    我必须设计一个其中包含输入的表单 我在输入上使用背景图像 因此它看起来像一个按钮 每次有人点击它时 它都会发送 POST 这是我想要实现的行为 但问题在于表格的轮廓 当我们单击表单时 会显示轮廓 虽然很小 但如果能让表单 或输入 失去轮廓那
  • 如何在 Vuejs 组件中应用过滤器?

    如果我有一个简单的过滤器 请说 Vue filter foo function value return value replace foo g bar 还有一个简单的组件 Vue component example props msg S
  • 可以在网站上嵌入 Github 问题列表(带有特定标签)吗?

    有谁知道有一种简单的方法可以将带有特定标签的问题列表从 github 嵌入到网站上吗 这是为了在项目网站上嵌入未解决的错误列表 使用 jQuery 的解决方案 有一种方法可以轻松地使用 github api 仅使用 javascript 无
  • 固定位置在 Safari 7 中不起作用

    我有一个固定位置的 div 当我滚动时它位于屏幕底部 而不是移动 然而 在 Safari 上 这个 div 的行为就像是绝对定位的 并随着其余内容一起上下移动 当我单击 检查元素 时 编程的 所需的 位置会突出显示 而不是视觉 实际 位置
  • 使用 Python min() max() 避免数值的字典顺序

    我有一个脚本可以从一组值中提取随机数 然而 今天它崩溃了 因为min and max 按字典顺序对值进行排序 因此 200 被视为大于 10000 我怎样才能避免这里的字典顺序 Len关键是在正确的轨道上 但并不完全正确 我找不到任何其他有
  • 使用 istream 从命名管道读取

    是否可以使用 C stl 从命名管道 mkfifo 读取 使用流 因此没有提前定义char buffer MAX SIZE 用于读操作 我想读取直到缓冲区结束并将结果放入std string 当前方法 bytes read fd buffe
  • 如何在iOS中检索ssl服务器证书?

    我希望能够获得 ssl 证书 如果可能的话 链 以便能够显示可分辨名称并确定它是否是 EV 证书 通过证书策略检测 EV 证书 维基百科 http en wikipedia org wiki Extended Validation Cert
  • 如何使用 Python 获取 Selenium Webdriver 上的会话 ID?

    我正在使用 SauceLabs 我需要 sessionId 来获取那里的作业 ID 并使用它在测试执行期间设置通过 失败状态 如何使用 python 获取会话 ID 找到了 Selenium Remote Webdriver session
  • 如何用 2 列制作 R 图例?

    我想在我的图表上制作一个图例 它是由plot 功能 原本的legend 函数将生成一个只有 1 列的列表 我怎样才能制作一个有两列的图例 我无法找到一种方法可以在一次调用中做到这一点legend对于标准地块 这是一个选项 绘制两个单独的图例
  • 在 JNA 中创建一个本机 Windows 窗口和一些带有 GWL_WNDPROC 的 GetWindowLong

    再会 我已经使用 JNA 与 Windows API 交互有一段时间了 现在我在创建窗口时陷入困境 据我做了以下事情 1 创建了现有窗口的子窗口并为其获取了有效的处理程序 2 了解Windows 中的每个窗口都有一个不间断的消息分发循环 3
  • 我可以更新 WebStorm 中的 TypeScript 版本吗?

    我目前正在使用 WebStorm 10 0 4 最新的 TypeScript 版本是 1 5 3 但在 WebStorm 中存在旧版本的 TypeScript 如何在 WebStorm 中更新我的 TypeScript 版本 在默认设置对话
  • 当路径不存在时的 SHParseDisplayName

    我正在开发一个替代品IFileOpenDialog and IFileSaveDialog 我几乎让它工作了 至少IFileOpenDialog 但是当我想返回时IShellItem代表新文件名 用户选择保存在GetResult 方法 我无
  • 删除注册表键值

    在 MSDN 中 它说在调用更改正在枚举的注册表项的函数时不应使用 RegEnumValue 那么这也适用于删除注册表项值吗 就像这段代码所做的那样 if RegOpenKeyEx m hkey m path c str 0 KEY ALL
  • Gradle:在自定义独立插件中使用“maven-publish”插件

    在我的第三个问题之后 几乎感觉像是在发垃圾邮件 因为我的问题看起来很微不足道 但我在 Gradle 文档中找不到对我的案例有任何帮助 而且关于 stackoverflow 的其他问题也没有帮助 这次 我无法使用maven publish插件
  • 如何在 Perl 中引用长字符串?

    我通常使用简单的引号 但有时我会得到很长的行 我无法中断并且还需要使用转义字符 所以我得到如下内容 my str select query accession query tag hit accession hit tag signific
  • Tesseract 对阿拉伯语单词/字母不返回任何内容

    我已经安装了 Pytesseract 它可以完美地处理法语 英语文本以及数字 但是当我尝试阅读任何阿拉伯文本 字母时 它不会返回任何内容 这是我使用过的代码 try from PIL import Image except ImportEr
  • 考虑到可扩展性的基于组件的应用程序:OSGi 还是 Akka?

    在我的硕士论文中 我正在开发一个用于销售大型活动门票的应用程序框架 我的主要要求是可修改性 可扩展性和性能 我的客户 活动组织者 应该能够在运行时轻松替换组件并添加功能 此类组件的一个示例是座位分配组件 我的导师说看看 OSGi 松散耦合的
  • 具有多个引用的 postgresql cte 仅运行一次

    只是想知道 在 pgsql cte 中是否会创建临时表 并且每次加入查询时都不会重新执行 cte 下面是同一查询的 pgsql 和 sql server 版本 sql server 需要 6 秒 pgsql 只需要 3 秒 这是侥幸还是永远
  • 使用 D3.js 在矩形上显示文本

    I am developing Normalized stacked bar chart using d3 js and trying to append a text on rect It is getting appended when