在 svg 上居中对齐饼图

2024-02-11

我试图让一个饼图示例起作用,其中图表的位置在其包含的元素内居中对齐,在本例中只是一个简单的 div 设置为使用 100% 可用宽度。

看到这个fiddle http://jsfiddle.net/2qeab2ds/1/

正如您所看到的,图表的中心位于 div 的左上角,而不是根据我设置的转换属性使用可用宽度和高度的中心点:

.attr('transform', 'translate(' + width / 2 +  ',' + height / 2 + ')');

我正在关注这个例子here http://zeroviscosity.com/d3-js-step-by-step/step-1-a-basic-pie-chart,它使用硬代码宽度,在我的例子中,我最终将使其响应并在屏幕调整大小事件上重新绘制。

我做错了什么,或者完全错过了什么,以防止从 div\svg 区域的中心点绘制图表?

EDIT

好的,通过检查 DOM,我注意到形成每个饼图片段的路径不是 svg group (g) 元素的子元素,而在其他示例中我看到它们是。我不确定为什么这在我的情况下不能正常工作,但据我所知,这似乎是问题所在


你是对的,你希望你的饼图元素成为<g>。为此,首先存储<g>在像这样的变量中:

var g = svg.attr('height', height)
        .append('g')
        .attr('transform', 'translate(' + width/2 +  ',' + height/2 +')');

然后创建<path>s 作为 的子代g:

var path = g.selectAll("path")
    .data(pie(dataset.apples))
    .enter().append("path")
    .attr("fill", function(d, i) { return color(i); })
    .attr("d", arc);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 svg 上居中对齐饼图 的相关文章

  • 如何根据D3中的数据创建元素?

    看着sample https github com mbostock d3 wiki Selections wiki data d3 select body selectAll div data 4 8 15 16 23 42 enter
  • 如何避免多系列折线图d3.js的工具提示重叠

    我已经在多系列折线图上创建了工具提示 如下所示在这里回答 https stackoverflow com questions 34886070 d3 js multiseries line chart with mouseover tool
  • D3.js - 更改鼠标悬停时元素的不透明度 IF 条件 = false

    我正在制作一个带有过滤器的交互式 D3 js 图表 当用户单击选定的复选框时 该过滤器会显示点 此外 在鼠标悬停事件上 所选点旁边将出现一个弹出窗口 其中包含一些信息 由于图表上的点数量相对较多 因此我选择在取消选中相应复选框时使相关点变得
  • 使 D3 响应式:viewBox 与 resize()?

    我必须构建在平板电脑 桌面显示器以及某些情况下非常大的 4k 高分辨率影院尺寸显示器上都能正常运行的 d3 可视化效果 因此 我试图找出使用 SVG 的 viewBox 属性和 preserveaspectratio 与调用调整大小函数以在
  • 如何使用 d3.format 获取可本地化或可定制的 si 代码

    使用 SI 代码绘制图表正是我们想要的 我们的 y 轴值往往是较大的货币值 例如 10 411 504 201 20 缩写这个 至少在美国语言环境中 这应该转换为 10 4B 但是使用 d3 format 的 s 类型表示 SI 代码 这将
  • 表格中与文本一起内嵌 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 的饼图示例进行操作http bl ocks org mbostock 3887235 http bl ocks org mbostock 3887235 我的代码的最小示例 const container graph
  • 赋予 d3 序数轴标签与尺度名称不同

    我有一个序数scale具有不同值的某些标签 我想显示该比例的轴 其中轴标签与比例标签不同 我有这个代码 var width 1000 var height 600 var margins left 100 40 right 25 botto
  • 如何在 d3.js 中填充 svg 圆圈内的图像

    这是我在 svg 中填充圆圈的代码 var svgContainer d3 select body append svg attr width 1000 attr height 1000 var circles svgContainer s
  • d3 序数尺度的映射

    我正在使用 D3 的序数比例将数字映射到颜色 我用过这个 color d3 scale ordinal range 1f77b4 ff7f0e 2ca02c d62728 9467bd 8c564b e377c2 domain 0 6 co
  • 在 X 轴刻度上渲染 HTML

    我想在 D3 图表的 x 轴上渲染 HTML 基本上 我希望轴上的每个标签都是到数据中另一列的超链接 我试过了 x domain data map function d return a href d Name a 但它根本不起作用 我得到
  • D3.以编程方式缩放后使用鼠标滚轮时缩放会跳转

    当我通过单击鼠标缩放到特定位置然后尝试平移或使用鼠标滚轮时 缩放行为会跳跃 看来我的缩放级别正在恢复 就像单击鼠标之前一样 这是我的事件处理程序 function click d var x y k if d centered d var
  • 处理重叠 SVG 图层中的鼠标事件

    我正在使用 d3 js 构建地图可视化 我正在为美国各州和县绘制填充多边形 县的 SVG 图层位于州图层下方 状态已填充 但填充不透明度设置为 0 我认为 需要填充来捕获点击事件 我想捕获州级的点击事件 但我想捕获县级的鼠标悬停事件 但是
  • 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 我不知道在哪里添加 到第一种情况 或者在第二种
  • nvd3散点图中自定义无数据标签

    我正在尝试使用自定义消息而不是显示的 无可用数据 消息 我正在使用 nvd3 散点图 气泡图 我遇到了一个建议here https stackoverflow com questions 17458236 nvd3 showing empt
  • D3、TS 和 Angular 2

    我正在尝试将 D3 v4 与 Angular 2 Typescript 一起使用 我目前正在研究 D3 v4 我能够遵循 stackoverflow 中类似问题的一些答案 但没有成功 我已经导入了大部分 D3 库及其类型 我使用的是 TS
  • d3.js - .exit().remove() 组元素不起作用

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

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

    为了制作地图 我需要将一些值从 csv 导入到 json直接在代码中 为了加载 json 和 csv 文件 我使用 Promise 对象的异步操作 并使用两个循环和一个公共键在 json 文件上添加新属性 for var i 0 i lt
  • 改进 D3 序列旭日示例

    This D3示例作为我的出发点 http bl ocks org kerryrodden 7090426 http bl ocks org kerryrodden 7090426 我想更改提供图表的数据 并且我做了以下新示例 http j

随机推荐

  • Psycopg2 中的“类型错误:参数 2 必须是连接、游标或无”

    我设置了一个 Heroku 管道 并且刚刚为其启用了评论应用程序 它使用与我的登台和生产应用程序相同的代码库 相同的设置文件和所有内容 当审核应用程序启动时 它可以连接到创建的数据库并运行迁移 当我尝试连接到浏览器中的应用程序时 我得到 T
  • 服务器客户端通信Python

    Server import socket import sys s socket socket socket AF INET socket SOCK STREAM host VAC01 VACLab com port int 2000 s
  • request-promise-native 的替代方案[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我一直在寻找在 Node js 中实现基本 HTTP 方法 例如 GET POST 的现代模块 我想最受
  • 片段中的 EditText 和软键盘问题

    我目前正在构建一个 Android 应用程序 使用户能够拍照并写入其详细信息 该应用程序使用 Sherlock 库 我实现了一个 SherlockFragment 来显示图像 以及一些 EditText 和 TextView 来使用户能够键
  • 使用正则表达式匹配数字 - 仅数字和逗号

    我无法弄清楚如何为示例值构建正则表达式 123 456 789 12 34 1234 8 你可以帮帮我吗 什么是数字 我有一个简单的问题your 简单 问题 一个数字 到底是什么意思 Is 0一个号码 你对这个怎么看 1 Is or 一个号
  • 如何通过 ID 从另一个网站获取元素 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想通过其 ID 从另一个站点获取 div 的内容 比方说 我有一个网站 我想从这个 URL 获取 id 为 mainbar 的 di
  • 如何用C语言生成GUID?

    我想生成插入 SQLite 数据库的 guid 即数据库本身不支持 但是 我想控制某些属性 用于生成不断增加的指导值的有序性 计算机独立性 数据库是公共的 可能 可能不希望 guid 允许某人将数据追溯到特定机器 足够 的随机性 guid
  • S3方法:扩展ggplot2`+.gg`函数

    我正在尝试延长ggplot2一个新的类 我们称之为foo对于这个例子 目标是写一个 foo将用来代替的方法 gg 但是我遇到了 方法不兼容 的问题 设置 目前我可以写ggplot add foo layer这将使plot进入我的foocla
  • 如何重新计算单元格的公式?

    我的代码设置了很多单元格值 最后 在生成 Excel 文件之前需要评估每个单元格中的公式 对于大多数床单来说 一切进展顺利 但是 有一个单元格抛出异常 该单元格正在计算其后面的一系列单元格以及其他工作表中的参考单元格的平均值 我猜当第一个单
  • R:如何使用正则表达式对列表元素进行分组和聚合?

    我想按组汇总 总结 以下产品列表 见下文 prods lt list 101 2000 data frame 1 2 3 102 2000 data frame 4 5 6 103 2000 data frame 7 8 9 104 200
  • 通过 request 在 Node.js 中获取下载进度

    我正在创建一个使用 Node 模块下载应用程序文件的更新程序request 我该如何使用chunk length估计剩余文件大小 这是我的代码的一部分 var file url http foo com bar zip var out fs
  • 使用 Java 将文件上传并 POST 到 PHP 页面

    我需要一种上传文件并将其 POST 到 php 页面的方法 我的 php 页面是
  • C++ 中的字符串分配:为什么会这样? [复制]

    这个问题在这里已经有答案了 void changeString const char s std string str s str replace 0 5 Howdy s str c str int main const char s He
  • 如何在 Python 中创建带有复选框的树视图

    我一直在使用 Tkinter 和 Tix 编写一个小程序 我现在需要一个带有复选框 复选框 的树视图 以便我可以从树视图中选择项目 是否有捷径可寻 我一直在研究 ttk Treeview 看起来很容易获得树视图 但是有没有办法在视图中插入复
  • Axios 拦截器令牌标头存在于配置中,但不存在于请求标头中

    我创建了 axios 拦截器 它负责在每个请求发送到我的其余 API 之前添加令牌 import axios from axios import store from store store export default function
  • IHttpContextAccessor 会话 GetString

    我正在尝试使用 NET Core 运行时将 ASP NET MVC 站点迁移到 ASP NET Core 以前 我们可以从会话存储中获取对象 即使在不同的程序集中 也可以使用 var obj HttpContext Current Sess
  • 如何无限迭代列表,每次循环 +1 偏移量

    我想从 0 到末尾无限迭代列表 但在下一个循环中 我想从 1 开始到末尾加 0 下一个循环将从 2 开始到末尾加 0 1 直到最后一项将从 0 重新开始并到达末尾 这是我的代码 a 0 1 2 offset 0 rotate 0 while
  • 如何从 R Shiny 应用程序中数据表中的选定行获取行值

    我需要从 DT 数据表中获取所选行第一列的值 使用 数据表 rows selected 我能够获取选定的行数 现在我正在寻找从数据表中提取行值的方法 在下面的例子中 有两个观察事件基于操作按钮 第一个观察事件被导入并显示数据 第二个观察事件
  • 无法在 Atom 中安装 platformio-ide-terminal

    我是 python 的初学者 从昨天开始学习它 我面临以下错误 Installing email protected cdn cgi l email protection failed gt email protected cdn cgi
  • 在 svg 上居中对齐饼图

    我试图让一个饼图示例起作用 其中图表的位置在其包含的元素内居中对齐 在本例中只是一个简单的 div 设置为使用 100 可用宽度 看到这个fiddle http jsfiddle net 2qeab2ds 1 正如您所看到的 图表的中心位于